Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓:动态地离散发送电子邮件?_Java_Android_Email_Gmail - Fatal编程技术网

Java 安卓:动态地离散发送电子邮件?

Java 安卓:动态地离散发送电子邮件?,java,android,email,gmail,Java,Android,Email,Gmail,因此,我试图让它这样一个用户可以输入信息到几个编辑文本,点击一个按钮,然后关闭电子邮件。在我连接到“发件人”电子邮件的设备上,它可以正常工作。但在其他未连接“发件人”电子邮件的设备上,它不会发送电子邮件,然后我的Gmail帐户会发出未知设备警报。 问题是如何避免使用“发件人”电子邮件和密码来避免此帐户错误,同时确保用户没有看到“收件人”电子邮件以避免用户滥发该电子邮件。 Log.i(“SendMailActivity”,“单击发送按钮”) 主要活动“选项”是选择主题的下拉列表。Name是用户输入

因此,我试图让它这样一个用户可以输入信息到几个编辑文本,点击一个按钮,然后关闭电子邮件。在我连接到“发件人”电子邮件的设备上,它可以正常工作。但在其他未连接“发件人”电子邮件的设备上,它不会发送电子邮件,然后我的Gmail帐户会发出未知设备警报。 问题是如何避免使用“发件人”电子邮件和密码来避免此帐户错误,同时确保用户没有看到“收件人”电子邮件以避免用户滥发该电子邮件。 Log.i(“SendMailActivity”,“单击发送按钮”)

主要活动“选项”是选择主题的下拉列表。Name是用户输入的名称。消息是主体的用户输入

public class GMailSender {

final String emailPort = "587";// gmail's smtp port
final String smtpAuth = "true";
final String starttls = "true";
final String emailHost = "smtp.gmail.com";

static String fromEmail;
String fromPassword;
static List<String> toEmailList;
static String emailSubject;
static String emailBody;

Properties emailProperties;
Session mailSession;
MimeMessage emailMessage;

public GMailSender() {

}

public GMailSender(String fromEmail, String fromPassword,
        List toEmailList, String emailSubject, String emailBody) {
    this.fromEmail = fromEmail;
    this.fromPassword = fromPassword;
    this.toEmailList = toEmailList;
    this.emailSubject = emailSubject;
    this.emailBody = emailBody;

    emailProperties = System.getProperties();
    emailProperties.put("mail.smtp.port", emailPort);
    emailProperties.put("mail.smtp.auth", smtpAuth);
    emailProperties.put("mail.smtp.starttls.enable", starttls);
    Log.i("GMail", "Mail server properties set.");
}

public MimeMessage createEmailMessage() throws AddressException,
        MessagingException, UnsupportedEncodingException {

    mailSession = Session.getDefaultInstance(emailProperties, null);
    emailMessage = new MimeMessage(mailSession);

    emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
    for (String toEmail : toEmailList) {
        Log.i("GMail","toEmail: "+toEmail);
        emailMessage.addRecipient(Message.RecipientType.TO,
                new InternetAddress(toEmail));
    }

    emailMessage.setSubject(emailSubject);
    emailMessage.setContent(emailBody, "text/html");// for a html email
    // emailMessage.setText(emailBody);// for a text email
    Log.i("GMail", "Email Message created.");
    return emailMessage;
}
public MimeMessage createEmailWithAttachment(File file)
            throws MessagingException, IOException {

    mailSession = Session.getDefaultInstance(emailProperties, null);
    emailMessage = new MimeMessage(mailSession);

    emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
    for (String toEmail : toEmailList) {
        Log.i("GMail","toEmail: "+toEmail);
        emailMessage.addRecipient(Message.RecipientType.TO,
                new InternetAddress(toEmail));
    }

    emailMessage.setSubject(emailSubject);
    emailMessage.setContent(emailBody, "text/html");

    Log.i("GMail", "Email Message created.");


            MimeBodyPart mimeBodyPart = new MimeBodyPart();
            mimeBodyPart.setContent(emailBody, "text/plain");

            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(mimeBodyPart);

            mimeBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(file);

            mimeBodyPart.setDataHandler(new DataHandler(source));
            mimeBodyPart.setFileName(file.getName());

            multipart.addBodyPart(mimeBodyPart);
            emailMessage.setContent(multipart);

            return emailMessage;
            }
public void sendEmail() throws AddressException, MessagingException {

    Transport transport = mailSession.getTransport("smtp");
    transport.connect(emailHost, fromEmail, fromPassword);
    Log.i("GMail","allrecipients: "+emailMessage.getAllRecipients());
    transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
    transport.close();
    Log.i("GMail", "Email sent successfully.");
}
}

同样,此代码在连接到我设置的“发件人”电子邮件的设备上工作。我正在寻找一种方法,让用户在不看我的电子邮件的情况下向我发送电子邮件。任何替代方案或修复方案将不胜感激

public class GMailSender {

final String emailPort = "587";// gmail's smtp port
final String smtpAuth = "true";
final String starttls = "true";
final String emailHost = "smtp.gmail.com";

static String fromEmail;
String fromPassword;
static List<String> toEmailList;
static String emailSubject;
static String emailBody;

Properties emailProperties;
Session mailSession;
MimeMessage emailMessage;

public GMailSender() {

}

public GMailSender(String fromEmail, String fromPassword,
        List toEmailList, String emailSubject, String emailBody) {
    this.fromEmail = fromEmail;
    this.fromPassword = fromPassword;
    this.toEmailList = toEmailList;
    this.emailSubject = emailSubject;
    this.emailBody = emailBody;

    emailProperties = System.getProperties();
    emailProperties.put("mail.smtp.port", emailPort);
    emailProperties.put("mail.smtp.auth", smtpAuth);
    emailProperties.put("mail.smtp.starttls.enable", starttls);
    Log.i("GMail", "Mail server properties set.");
}

public MimeMessage createEmailMessage() throws AddressException,
        MessagingException, UnsupportedEncodingException {

    mailSession = Session.getDefaultInstance(emailProperties, null);
    emailMessage = new MimeMessage(mailSession);

    emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
    for (String toEmail : toEmailList) {
        Log.i("GMail","toEmail: "+toEmail);
        emailMessage.addRecipient(Message.RecipientType.TO,
                new InternetAddress(toEmail));
    }

    emailMessage.setSubject(emailSubject);
    emailMessage.setContent(emailBody, "text/html");// for a html email
    // emailMessage.setText(emailBody);// for a text email
    Log.i("GMail", "Email Message created.");
    return emailMessage;
}
public MimeMessage createEmailWithAttachment(File file)
            throws MessagingException, IOException {

    mailSession = Session.getDefaultInstance(emailProperties, null);
    emailMessage = new MimeMessage(mailSession);

    emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
    for (String toEmail : toEmailList) {
        Log.i("GMail","toEmail: "+toEmail);
        emailMessage.addRecipient(Message.RecipientType.TO,
                new InternetAddress(toEmail));
    }

    emailMessage.setSubject(emailSubject);
    emailMessage.setContent(emailBody, "text/html");

    Log.i("GMail", "Email Message created.");


            MimeBodyPart mimeBodyPart = new MimeBodyPart();
            mimeBodyPart.setContent(emailBody, "text/plain");

            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(mimeBodyPart);

            mimeBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(file);

            mimeBodyPart.setDataHandler(new DataHandler(source));
            mimeBodyPart.setFileName(file.getName());

            multipart.addBodyPart(mimeBodyPart);
            emailMessage.setContent(multipart);

            return emailMessage;
            }
public void sendEmail() throws AddressException, MessagingException {

    Transport transport = mailSession.getTransport("smtp");
    transport.connect(emailHost, fromEmail, fromPassword);
    Log.i("GMail","allrecipients: "+emailMessage.getAllRecipients());
    transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
    transport.close();
    Log.i("GMail", "Email sent successfully.");
}
public class SendMailTask extends AsyncTask {

private ProgressDialog statusDialog;
private Activity sendMailActivity;
public boolean sendFile = true;
public File file =null;
public SendMailTask(Activity activity, boolean sendFile, File file) {
    sendMailActivity = activity;
    this.sendFile=sendFile;
    this.file=file;
}

protected void onPreExecute() {
    statusDialog = new ProgressDialog(sendMailActivity);
    statusDialog.setMessage("Getting ready...");
    statusDialog.setIndeterminate(false);
    statusDialog.setCancelable(false);
    statusDialog.show();
}
@Override

protected Object doInBackground(Object... args) {
    try {
        Log.i("SendMailTask", "About to instantiate GMail...");
        publishProgress("Processing input....");
        if(!sendFile)
        {
            GMailSender androidEmail = new GMailSender(args[0].toString(),
                    args[1].toString(), (List) args[2], args[3].toString(),
                    args[4].toString());
            publishProgress("Preparing mail message....");
            androidEmail.createEmailMessage();
            publishProgress("Sending email....");
            androidEmail.sendEmail();
        }
        else
        {   GMailSender androidEmail = new GMailSender(args[0].toString(),
                args[1].toString(), (List) args[2], args[3].toString(),
                args[4].toString());
            publishProgress("Preparing mail message....");
            androidEmail.createEmailWithAttachment(file);
            publishProgress("Sending email....");
            androidEmail.sendEmail();

        }
        publishProgress("Email Sent.");

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        Log.i("SendMailTask", "Mail Sent.");
    } catch (Exception e) {
        publishProgress("Email Not Sent.");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e2) {
        }
    }

    return null;
}

@Override
public void onProgressUpdate(Object... values) {
    try
    {
    statusDialog.setMessage(values[0].toString());
    }
    catch(Exception e) {}
}

@Override
public void onPostExecute(Object result) {
    statusDialog.dismiss();
}