嗨,首先我想说一个使用gmail的发件人要在我的应用程序中点击按钮发送邮件,我在那里得到了来自这里的解决方案
现在在上面的代码中,我无法附加文件。但后来我看到了Stack over flow的解决方案,解决了这个问题,在"GMailSender.java"文件中进行了一些修改,修改后的链接是这里的
现在我的问题是我不理解修改后的部分这是旧的部分
public synchronized void sendMail(字符串主题、字符串正文、字符串发件人、字符串收件人)
修改部分是
public synchronized void sendMail(字符串主题、字符串正文、字符串发件人、字符串收件人、文件附件)
这不是一个重复的问题,我只是想知道这个"文件附件"部分是什么,以及我应该实现什么类型或方法来附加文件。如果你有任何疑问,请通过这两个链接,并提前找到解决方案。
您正在传递一个名为attachment
的File
对象。这将是任何你想附加到你的电子邮件。
你可以把它附加到你的电子邮件中,比如:
MimeMessage message = new MimeMessage(session);
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(body);
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(attachment); //set attachment to filedatasource
mbp2.setDataHandler(new DataHandler(fds)); //add the filedatasource object to your 2nd mimebodypart
mbp2.setFileName(fds.getName());
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
message.setContent(mp);
...send email...
编辑:从来没有从SD卡中获得过图像,但我认为你可以很容易地创建一个File
对象,如下所示:
File imageFile = new File("path to image on sd card");
然后,您将调用您的sendMail方法来传递该文件对象。
试试这个
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822") ; // use from live device
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT,"subject goes here");
i.putExtra(Intent.EXTRA_TEXT,"body goes here");
i.putExtra(Intent.EXTRA_STREAM, new File(""));
startActivity(Intent.createChooser(i, "Select email application."));