【问题标题】:Email sending application without using intent is not working不使用意图的电子邮件发送应用程序不起作用
【发布时间】:2016-03-21 13:45:58
【问题描述】:

我想开发一个应用程序,用户可以通过它从任何地方发送电子邮件(不使用 Intent),另一方面,我可以通过我的 Gmail id 接收它。

这是我的代码,当我点击按钮时..

switch (v.getId()) {
    case R.id.bBack:
        finish();
    break;
    case R.id.bSend:
        // send an email
        sendEmail();
    break;
}

我使用的另一个类是..

private void sendEmail() {
    mName = name.getText().toString();
    mEmail = "something@gmail.com";
    mPassword = "password";
    mQuery = query.getText().toString();

    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", true);
    props.put("mail.smtp.port", "465");

    // jis email id se mail bhejni hai.. wo email id & passwrd..
    session = Session.getDefaultInstance(props, new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(mEmail, mPassword);
        }
    });
    pdialog = ProgressDialog.show(this, "", "Sending Mail..", true);

    RetreiveFeedTask task = new RetreiveFeedTask();
    task.execute();
}
class RetreiveFeedTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... params) {
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(mEmail));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(RecTo));

            message.setSubject(subject);
            message.setContent(mQuery, "text/plain; charset=utf-8");

            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(String result) {
        if (mName == "" || mEmail == "" || mPassword == "" || subject == ""
                || mQuery == "") {
            Toast.makeText(getApplicationContext(), "Enter Details",
                    Toast.LENGTH_LONG).show();
        } else {
            name.setText("");
            phone.setText("");
            query.setText("");

            Toast.makeText(getApplicationContext(), "Message Sent",
                    Toast.LENGTH_LONG).show();
        }
        pdialog.dismiss();
    }
}

问题是我的代码既没有发送电子邮件也没有显示任何错误。

【问题讨论】:

  • 这里的代码太多了。你能提供一个Minimal, Complete, and Verifiable example吗?
  • 可以吗..?我编辑了它..
  • 请查看编辑后的代码并帮助我..
  • 谢谢@Kevin.. :)
  • 真的很感激.. :)

标签: android email


【解决方案1】:

经过长时间的研究,终于找到了这个问题的一个可能的答案。

简单地说,在我的 android 代码中,我使用了 AsyncTask 并从这样的 url 中的表单中传递了我的 EditText 的值:

String url_select = "http://link_to_my_website/my_page.php?phone="+phone.getText().toString()+"&name="+name.getText().toString()+"&message="+query.getText().toString()+"&sender="+email.getText().toString();

并在包含 PHP 邮件功能的 PHP 页面上捕获这些变量。

PHP 代码:

<?php
$email_phone_no=$_REQUEST['phone'];
$email_name=$_REQUEST['name'];
$email_message=$_REQUEST['message'];
$sender=$_REQUEST['sender'];

$email_to = $sender;
$subject = "My Subject";

$company="My Company";

$from = $company . ' <' . "info@my_website_link.com" . '>';

$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP". phpversion() ."\r\n" ;

$headers .= 'From: My Company<info@my_website_link.com>' . "\r\n";

mail($email_to, $subject, $email_message, $headers);

echo"Email has been sent";
?>

【讨论】:

    【解决方案2】:

    将 java 邮件 API 集成到您的代码中。JavaMail API 提供了一个独立于平台和协议的框架来构建邮件和消息传递应用程序。 你可以在这里下载: https://code.google.com/p/javamail-android/downloads/list

    您可以使用 smtp 发送电子邮件: Sending mail in android without intents using SMTP

    供参考: http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_(no_Intents)_in_Android

    【讨论】:

    • 谢谢@Azfaar ..我检查了你提供的两个链接,但兄弟它对我不起作用.. :(
    • 您提供的参考链接..我最初使用了该代码..问题是它既没有显示任何错误也没有发送电子邮件.. :(当我点击时,另一个链接正在崩溃应用程序在发送按钮上.. :(
    • 另一个很好的使用 javamail api 的场景的工作教程:mrbool.com/how-to-work-with-java-mail-api-in-android/27800
    • 再次兄弟,我遇到了同样的问题.. :( 我也使用了这个链接的解决方案:stackoverflow.com/questions/2020088/ 但没有运气.. 一样,没有错误,也没有发送电子邮件.. :( 当我点击按钮时,另一个链接使我的应用程序崩溃.. :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2016-02-11
    • 2012-08-01
    • 2018-10-30
    相关资源
    最近更新 更多