문제

이 코드를 사용하여 Gmail을 직접 작성할 수 있지만 Gmail 페이지 에서이 메일을 직접 보내고 싶습니다.내 보내기 버튼을 클릭 할 때 Gmail 작성 페이지에서 Good를 사용하여 Google을 사용하여 직접 메일을 직접 보내어야합니다.

보호 된 void sendemail () {

    String[] recipients = { recieverId.getText().toString() };
    Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));

    email.setType("message/rfc822");

    email.putExtra(Intent.EXTRA_EMAIL, recipients);
    email.putExtra(Intent.EXTRA_SUBJECT, mailSubject.getText().toString());
    email.putExtra(Intent.EXTRA_TEXT, mailBody.getText().toString());

    final PackageManager pm = getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(email, 0);
    ResolveInfo best = null;
    for (final ResolveInfo info : matches)
      if (info.activityInfo.packageName.endsWith(".gm") ||
          info.activityInfo.name.toLowerCase().contains("gmail"))
          best = info;
    if (best != null)
      email.setClassName(best.activityInfo.packageName, best.activityInfo.name);

    try {

    startActivity(email);
    } catch (android.content.ActivityNotFoundException ex) {

        Toast.makeText(getApplicationContext(),
                "No email client installed.", Toast.LENGTH_LONG).show();

    }

}
.

도움이 되었습니까?

해결책

앱을 통해 전송하는 경우 사용자 개입이 필요합니다.

사용자 개입이 없으면 다음과 같이 보낼 수 있습니다.

  1. 클라이언트 APK에서 전자 메일을 보냅니다.여기 Mail.jar, Activation.jar는 Java 이메일을 보내야합니다.이러한 항아리가 추가되면 APK 크기가 증가 할 수 있습니다..링크

  2. 또는 동일한 mail.jar 및 activation.jar를 사용하여 전자 메일을 보내는 서버 측 코드에서 웹 서비스를 사용할 수 있습니다.Asynctask를 통해 웹 서비스를 호출하고 이메일을 보내드립니다.동일한 링크를 참조

다른 팁

아니요, 사용자 개입없이 Gmail에서 메일을 보낼 수 없으므로 보안 문제가 발생합니다.위에서 언제든지 의도를 통해 그 앱을 호출 할 수있는 것만.또는 메일을 보내는 Java Mail API를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top