gpt4 book ai didi

android - 通过 GMailSender 发送带附件的电子邮件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:49 24 4
gpt4 key购买 nike

我一直在阅读博客并尝试了多种实现方式,但仍然无法将图像附加到我使用 java 通过 GMail 发送的电子邮件中。我下载了所有的 jar 并添加了 GMailSender.java、GMailAuthenticator.java 和 JSSEProvider.java,这样我就可以正常发送电子邮件了。我尝试这样做的方式如下所示,中间部分被注释掉是我希望添加图像的部分。下面是我尝试执行此操作时 logcat 上的输出。我当然错过了一些非常简单的东西。有人可以向我指出吗?提前致谢。

    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {  
try {
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);

/*
// Create your new message part
BodyPart imgPart = new MimeBodyPart();

// Create a related multi-part to combine the parts
MimeMultipart multipart = new MimeMultipart("related");
multipart.addBodyPart(imgPart);

String fileName = "http://.../sampleBarcode.png";

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = this.getClass().getClassLoader();
if (classLoader == null) {
System.out.println("IT IS NULL AGAIN!!!!");
}
}

DataSource ds = new URLDataSource(classLoader.getResource(fileName));
imgPart.setDataHandler(new DataHandler(ds));
imgPart.setHeader("Content-ID", "<logoimg_cid>");

multipart.addBodyPart(imgPart);

message.setContent(multipart);
*/

if(recipients.indexOf(',') > 0) {
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
}
else message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));

Transport.send(message);
}
catch(Exception e){Log.e("EMAIL_ERROR",e.getMessage(), e);}
}

null
java.lang.NullPointerException
at javax.activation.URLDataSource.getContentType(URLDataSource.java:91)
at javax.activation.DataHandler.getContentType(DataHandler.java:218)
...
...
(plus some more)

最佳答案

我修改了函数以接受一个文件参数并将其附加到电子邮件中,在这里

public synchronized void sendMail(String subject, String body, String sender, String recipients, File attachment) throws Exception {
try{
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);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());

Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);

message.setContent(mp);

if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
}catch(Exception e){

}
}

关于android - 通过 GMailSender 发送带附件的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com