public void sendMail(String subject, String from, List<String> to, List<String> cc,
List<String> bcc, String bodyText, List<File> files, boolean draft) {
Message message = new MimeMessage(session);
try {
// 设置发件人地址
message.setFrom(new InternetAddress(from));
// 设置主题
message.setSubject(subject);
// 设置收件人
if(to!=null){
for (String item : to) {
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(item));
}
}
// 设置抄送人
if(cc!=null){
for (String item : cc) {
message.addRecipient(Message.RecipientType.CC,
new InternetAddress(item));
}
}
// 设置密送人
if(bcc!=null){
for (String item : bcc) {
message.addRecipient(Message.RecipientType.BCC,
new InternetAddress(item));
}
}
if(draft){
message.setFlag(Flags.Flag.DRAFT, true);
}
// 设置邮件内容
Multipart multipart = new MimeMultipart();
MimeBodyPart txtPart = new MimeBodyPart();
txtPart.setContent(bodyText, "text/html;charset=utf-8");
multipart.addBodyPart(txtPart);
// 添加附件
if (files != null && files.size() > 0) {
for (File f : files) {
MimeBodyPart part = new MimeBodyPart();
FileDataSource fds = new FileDataSource(f); // 得到数据源
part.setDataHandler(new DataHandler(fds)); // 得到附件本身并至入BodyPart
String filename=encodeFileName(fds.getName());
part.setFileName(filename); // 得到文件名同样至入BodyPart
multipart.addBodyPart(part);
}
}
message.setContent(multipart);
message.setFlag(Flags.Flag.RECENT, true);
message.saveChanges();
if(!draft){
Transport transport = session.getTransport("smtp");
transport.connect(host, userName, passWord);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
代码如上,邮件能发给接收人,但是无法存入本人的已发送目录。
而且draft是我用来区分发出去还是暂时存草稿的,也没用,谁能指导一下?200分
------解决思路----------------------
邮件协议里没有“保存已发送”这个东西吧。
这个已发送这个功能明显是客户端的功能,协议里只是规范服务器怎么转发。你既然是直接走协议不走客户端,没有进已发送应该很正常吧
------解决思路----------------------
应该是没有这个方法的,发邮件的时候,点击发送时候客户端自动调用方法,把你发送的邮件显示到发件箱里,读取的应该是邮件自己的数据库,你怎么通过自己的程序存到它的库呢?如果这样的话你只有自己写一个客户端了
------解决思路----------------------
/**
* 身份认证
* @author Administrator
*
*/
public class MyAuthenticator extends Authenticator {
String userName = null;
String password = null;
public MyAuthenticator() {
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}