如何将附件添加到我的邮件发件人JavaMail?

保罗·F:

我正在尝试向我的邮件发件人添加附件按钮。我正在使用JavaMail邮件库,激活库和附件库。我的发件人分为3个文件:

  • MainActivity允许用户通过编辑文本来设置邮件的内容
  • SendMail,它允许我设置发件人,并将内容从编辑文本发送到邮件并发送
  • Config,用于存储诸如发送者的地址和密码以及接收者的地址之类的信息。这是我实际的邮件发送者的代码,可以正确发送邮件但没有附件。

SendMail.java

package com.myapp.attch_mail;

import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SendMail extends AsyncTask<Void,Void,Void> {

private Context context;

private String subject;
private String message;

private ProgressDialog progressDialog;


SendMail(Context context, String subject, String message){

    this.context = context;
    this.subject = subject;
    this.message = message;

}


@Override
protected void onPreExecute() {
    super.onPreExecute();

    progressDialog = ProgressDialog.show(context,"Envoi en cours","Veuillez patienter...",false,false);
}


@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);

    progressDialog.dismiss();

    Toast.makeText(context,"Message sent",Toast.LENGTH_LONG).show();
}


@Override
protected Void doInBackground(Void... params) {

    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");

    Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {


                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(Config.EMAIL_SENDER, Config.PASSWORD);
                }
            });

    try {

        MimeMessage mm = new MimeMessage(session);

        mm.setFrom(new InternetAddress(Config.EMAIL_SENDER));

        mm.addRecipient(Message.RecipientType.TO, new InternetAddress(Config.EMAIL_RECEIVER));

        mm.setSubject(subject);

        mm.setText(message);

        Transport.send(mm);

    } catch (MessagingException e) {
        e.printStackTrace();
    }
    return null;
}
}

MainActivity.java


package  com.my_app.attach_mail;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class L3C1 extends AppCompatActivity implements View.OnClickListener {


private EditText objet_siq;
private EditText corps_siq;
private EditText prenom_siq;
private EditText nom_siq;
private EditText telephone_siq;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_l3_c1);


        object = findViewById(R.id.objet_siq);
        body = findViewById(R.id.corps_siq);
        first_name= findViewById(R.id.prenom_siq);
        last_name= findViewById(R.id.nom_siq);
        phone= findViewById(R.id.telephone_siq);


        Button buttonSend = findViewById(R.id.send_mail_siq);
        Button buttonAttachment = findViewById(R.id.add_attachment_siq);


        buttonSend.setOnClickListener(this);
        buttonAttachment.setOnClickListener(this);

}


private void sendEmail() {

    String subject = objet_siq.getText().toString().trim();
    String message = "Nom / Prénom : " + prenom_siq.getText().toString().trim() + " " + nom_siq.getText().toString().trim() + "\n" +"Téléphone : " + telephone_siq.getText().toString().trim() + "\n" + "\n" + "Description du problème : " + "\n" + corps_siq.getText().toString().trim() + "\n" + "\n" + "Cordialement, " +  prenom_siq.getText().toString().trim() + " " +nom_siq.getText().toString().trim();


    SendMail sm_siq = new SendMail(this, subject, message);


    sm_siq.execute();
}


@Override
public void onClick(View view) {
    sendEmail();

    object.setText("");
    body.setText("");
    first_name.setText("");
    last_name.setText("");
    phone.setText("");

}

}
保罗·F:

我知道了 !我查看了MimeMessage文档并找到了解决方案,您只需要将try(在SendMail.java中)的内容更改为此:

        MimeMessage mimeMessage = new MimeMessage(session);

        MimeMultipart mimeMultipart = new MimeMultipart();


        MimeBodyPart messageBodyPart = new MimeBodyPart();

        messageBodyPart.setContent(message, "text/plain; charset=UTF-8");

        mimeMultipart.addBodyPart(messageBodyPart);



        MimeBodyPart attachmentBodyPart = new MimeBodyPart();

        String filename = "path to your file, exemple : /storage/path.txt" ;
        DataSource source = new FileDataSource(filename);
        attachmentBodyPart.setDataHandler(new DataHandler(source));
        attachmentBodyPart.setFileName(filename);

        mimeMultipart.addBodyPart(attachmentBodyPart);


        mimeMessage.setFrom(new InternetAddress(Config.MAIL_SENDER));

        mimeMessage.addRecipient(Message.RecipientType.TO, new 
        InternetAddress(Config.MAIL_RECEIVER));

        mimeMessage.setSubject(subject);

        mimeMessage.setContent(mimeMultipart);

        Transport.send(mimeMessage);

我还更改了我使用的实例的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将valgrind测试添加到我的cmake“测试”目标

如何将Google脚本发件人电子邮件发送到[email protected]

将电子邮件附件名称添加到我的报表Outlook中

如何将具有不同类的片段添加到我的MainActivity

如何将NAudio添加到我的项目?

如何将SearchView添加到我现有的“联系人”项目中?

Wix Toolset-如何将Platforminstaller属性添加到我的.wixproj

Bleno:如何将消息发送回发件人?

从附件获取发件人电子邮件地址

如何将eclipse添加到我的gnome shell收藏夹中?

如何将OData键值添加到我的实体框架类?

我如何将Listview标头添加到我的应用程序

如何将“回复”添加到我们从网站PHP表单获得的电子邮件中?

如何将发件人地址添加到现有客户?

在将消息添加到jms队列之前,如何从ESB向发件人发送响应

我如何将物品添加到我的LI物品中

Rails-Mail_form如何将“发件人”字段自动设置为current_user电子邮件

我们如何将actor处理过的消息的结果发回给实际的发件人

使用VBA将发件人电子邮件追加到Outlook中附件的开头

如何将NSOutlineViewDataSource添加到我的NSOutlineView?

如何将特定按钮识别为发件人

如何将新参数添加到我的 URL - Laravel?

我如何将 AWS env varaible 添加到我的包 json 中

如何将间隔更新系统添加到我的机器人状态?

我如何将数字和字符串添加到我的 Django

我试图将图像附加到我用 python 编写的电子邮件发件人

如何将电报机器人添加到我不是管理员的电报组

我如何将源和图层添加到我的 react-map-gl

如何将包集合添加到我的 Xcode 项目中?