gpt4 book ai didi

Javamail : copy message to sent folder

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:34 25 4
gpt4 key购买 nike

我正在尝试使用 javamail api 发送电子邮件,然后将其复制到已发送文件夹。
我正在使用雅虎邮箱。
我可以发送电子邮件,但无法复制到已发送文件夹。

以下是复制到发送文件夹的代码:

private void copyIntoSent(Session session,Message msg) throws MessagingException{

Store store = session.getStore("imap");
store.connect("imap.mail.yahoo.com", SMTP_AUTH_USER, SMTP_AUTH_PWD);

Folder folder = (Folder) store.getFolder("Inbox.Sent.Notifications");
if (!folder.exists()) {
folder.create(Folder.HOLDS_MESSAGES);
}
folder.open(Folder.READ_WRITE);

folder.appendMessages(new Message[]{msg});
}

我收到此异常:

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: imap.mail.yahoo.com, 143; timeout -1; nested exception is: java.net.ConnectException: Connexion terminée par expiration du délai d'attente

我不知道问题是否仅来自于我的 IMAP 设置,或者复制到发送文件夹的方法是否错误。

提前致谢。

编辑:发送电子邮件代码:

Properties properties = System.getProperties();
// Setup mail server
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.user", from);
properties.put("mail.smtp.password", pass);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");

// Get the default Session object.
Session session = Session.getDefaultInstance(properties);

try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);

// Set From: header field of the header.
message.setFrom(new InternetAddress(from));

// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));

// Set Subject: header field
message.setSubject("This is the Subject Line!");

// Now set the actual message
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
String filename = "SendAttachment.java";//change accordingly


File f = new File("/path_to_file/test.pdf");
MimeBodyPart attachmentPart = new MimeBodyPart();
attachmentPart.attachFile(f);


Multipart multipart = new MimeMultipart();
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);
// Send message
Transport transport = session.getTransport("smtp");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecipients());
copyIntoSent(session, message);
transport.close();

最佳答案

您需要将 SSL 与 IMAP for Yahoo 结合使用。将“mail.imap.ssl.enable”设置为“true”。

此外,由于您显式使用transport.connect,因此不需要设置“mail.smtp.host”和“mail.smtp.user”;并且没有“mail.smtp.password”属性,因此您也不需要设置它。

你可能应该change Sesion.getDefaultInstance to Session.getInstance .

关于Javamail : copy message to sent folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669575/

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