为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

桃花长相依 2021-11-24 18:34:09
我正在尝试向我的邮件发件人添加一个附件按钮。我正在使用 JavaMail Mail、activation 和 additionalnal 库。我的发件人被分成 3 个文件:允许用户设置邮件内容的MainActivity编辑文本SendMail允许我设置发件人,以及从编辑文本到邮件的内容并发送存储发送者地址和密码以及接收者地址等信息的配置这是我的实际邮件发件人的代码,它可以正确发送邮件但没有附件。发送邮件.javapackage 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;}@Overrideprotected void onPreExecute() {    super.onPreExecute();    progressDialog = ProgressDialog.show(context,"Envoi en cours","Veuillez patienter...",false,false);}@Overrideprotected void onPostExecute(Void aVoid) {    super.onPostExecute(aVoid);    progressDialog.dismiss();    Toast.makeText(context,"Message sent",Toast.LENGTH_LONG).show();}@Overrideprotected 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);                }            });
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

我知道了 !我查看了 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);

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


查看完整回答
反对 回复 2021-11-24
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信