[b]1.发现问题阶段
[/b]
使用以前的发送邮件的java类,今天发送失败。报错如下:
(因为properties属性mail.debug设成了true,所以看到详情)
[img]http://dl2.iteye.com/upload/attachment/0119/3378/6ca5667f-6ec0-3fae-9f4b-d054e68bff3b.png[/img]
于是修改程序,增加了蓝色部分一句。
[img]http://dl2.iteye.com/upload/attachment/0119/3380/bb52e0e0-c49f-37fe-9d36-a12e5bf4bbae.png[/img]
再次运行,发现修改有作用。但仍报错。控制台报错如下:
[img]http://dl2.iteye.com/upload/attachment/0119/3382/e4b47b51-3025-31ac-90cf-bdf6acdcfc9b.png[/img]
发送代码部分如下,为啥上面的日志中MAIL FROM 这里这么奇怪换行了???是不是这里的问题???
2.使用wireshark确定问题
于是 祭出wireshark神器,安装foxmail,对比程序发送数据和foxmail发送数据。
程序发送时wireshark数据截取截图:
程
[img]http://dl2.iteye.com/upload/attachment/0119/3384/441c4cb7-eec0-31fe-85da-e4ace19c9ed5.png[/img]
faxmail发送时wireshark数据截取截图:
[img]http://dl2.iteye.com/upload/attachment/0119/3386/31c8ca58-7076-31fa-b3dc-e5887d8d6eb2.png[/img]
3.解决问题
于是开始重点检查setFrom参数的设置,发现还有一个setFrom(InternetAddress internetAddress)方法。于是果断改成
mailMessage.setFrom("liguocai@amindao.com");
修改为:
mailMessage.setFrom(new InternetAddress("liguocai@amindao.com"));
一切OK了.
虽然还不清楚mailMessage.setFrom("liguocai@amindao.com");的问题所在,但问题解决了。爽!!!
附邮件发送代码:
依赖包:
<classpathentry kind="lib" path="lib/activation-1.0.jar"/>
<classpathentry kind="lib" path="lib/commons-logging.jar"/>
<classpathentry kind="lib" path="lib/spring-1.0.jar"/>
<classpathentry kind="lib" path="lib/mail-1.0.jar"/>
[/b]
使用以前的发送邮件的java类,今天发送失败。报错如下:
(因为properties属性mail.debug设成了true,所以看到详情)
[img]http://dl2.iteye.com/upload/attachment/0119/3378/6ca5667f-6ec0-3fae-9f4b-d054e68bff3b.png[/img]
于是修改程序,增加了蓝色部分一句。
[img]http://dl2.iteye.com/upload/attachment/0119/3380/bb52e0e0-c49f-37fe-9d36-a12e5bf4bbae.png[/img]
再次运行,发现修改有作用。但仍报错。控制台报错如下:
[img]http://dl2.iteye.com/upload/attachment/0119/3382/e4b47b51-3025-31ac-90cf-bdf6acdcfc9b.png[/img]
发送代码部分如下,为啥上面的日志中MAIL FROM 这里这么奇怪换行了???是不是这里的问题???
2.使用wireshark确定问题
于是 祭出wireshark神器,安装foxmail,对比程序发送数据和foxmail发送数据。
程序发送时wireshark数据截取截图:
程
[img]http://dl2.iteye.com/upload/attachment/0119/3384/441c4cb7-eec0-31fe-85da-e4ace19c9ed5.png[/img]
faxmail发送时wireshark数据截取截图:
[img]http://dl2.iteye.com/upload/attachment/0119/3386/31c8ca58-7076-31fa-b3dc-e5887d8d6eb2.png[/img]
3.解决问题
于是开始重点检查setFrom参数的设置,发现还有一个setFrom(InternetAddress internetAddress)方法。于是果断改成
mailMessage.setFrom("liguocai@amindao.com");
修改为:
mailMessage.setFrom(new InternetAddress("liguocai@amindao.com"));
一切OK了.
虽然还不清楚mailMessage.setFrom("liguocai@amindao.com");的问题所在,但问题解决了。爽!!!
附邮件发送代码:
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
//import org.springframework.mail.SimpleMailMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
//import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.util.StringUtils;
public class SendMail {
public static void main(String args[]) throws MessagingException{
//创建邮件发送类 JavaMailSender
//用于发送基本的文本邮件信息(不能包括附件,及图片)
JavaMailSenderImpl sender = new JavaMailSenderImpl();
//java InstallCert smtp.office365.com:465
//java InstallCert outlook.office365.com:995
//设置邮件服务主机
((JavaMailSenderImpl)sender).setHost("smtp.mxhichina.com");
//((JavaMailSenderImpl)sender).setHost("outlook.office365.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)sender).setUsername("liguocai@amindao.com");
//发送者邮箱的密码
((JavaMailSenderImpl)sender).setPassword("Amindao2");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
//pro.put("mail.smtp.starttls.enable", "true");
pro.setProperty("mail.debug", "true");
pro.put("mail.smtp.auth", "true");
//pro.put("mail.smtp.socketFactory.port", "995");
pro.put("mail.smtp.socketFactory.port", "25");
//pro.put("mail.smtp.socketFactory.fallback", "false");
//通过文件获取信息
((JavaMailSenderImpl)sender).setJavaMailProperties(pro);
//创建基本邮件信息
SimpleMailMessage mailMessage = new SimpleMailMessage();
//发送者地址,必须填写正确的邮件格式,否者会发送失败
mailMessage.setFrom("liguocai@amindao.com");
//邮件主题
//建立邮件讯息
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper messageHelper=null;
messageHelper = new MimeMessageHelper( mimeMessage, true, "utf-8");
messageHelper.setFrom("liguocai@amindao.com");//使用这种方式是,使用wireshark检查末尾多了\r>\r\n ,程序提示500 Error: bad syntax,无效地址
//messageHelper.setFrom(new InternetAddress("liguocai@amindao.com"));
//设定收件人、寄件人、主题与内文
//邮件主题
if (args.length>=3){
//邮件接收者的邮箱地址
messageHelper.setTo(args[0]);
messageHelper.setSubject(args[1]);
//邮件内容,简单的邮件信息只能添加文本信息
messageHelper.setText(args[2]);
}else{
//邮件接收者的邮箱地址
messageHelper.setTo("liguocai@amindao.com"); //使用这种方式是,使用wireshark检查末尾多了\r>\r\n ,程序提示500 Error: bad syntax,无效地址
//messageHelper.setTo(new InternetAddress("liguocai@amindao.com"));
messageHelper.setSubject("test22");
//邮件内容,简单的邮件信息只能添加文本信息
messageHelper.setText("test。");
}
// //编码发件人
// try {
// messageHelper.setFrom( msg.getFrom(), PERSONAL_CN);
// } catch (UnsupportedEncodingException e) {
// messageHelper.setFrom( PERSONAL_EN + msg.getFrom());
// }
// /* 添加附件 */
// String[] filePath=null;
// File[] attachments=null;
// if (args.length>=4){
// filePath=args[3].split(",");
// attachments=new File[filePath.length];
// for (int i = 0; i < filePath.length; i++) {
// attachments[i]=new File(filePath[i]);
// }
// }else{
// attachments=new File[1];
// attachments[0]=new File("c:/as.txt");
// }
// sun.misc.BASE64Encoder base64 = new sun.misc.BASE64Encoder();
// String attName = null;
// for (int i = 0; i < attachments.length; i++) {
if (attachmentNames == null) {
attName = attachments[i].getName();
} else {
attName = attachmentNames[i];
}
// attName = attachments[i].getName();
// attName = "=?GBK?B?" + base64.encode( attName.getBytes()) + "?=";
//
// messageHelper.addAttachment( attName, new FileSystemResource(attachments[i]));
// }
sender.send( mimeMessage);
}
public static void main33(String args[]){
//创建邮件发送类 JavaMailSender
//用于发送基本的文本邮件信息(不能包括附件,及图片)
MailSender sender = new JavaMailSenderImpl();
//设置邮件服务主机
((JavaMailSenderImpl)sender).setHost("smtp.mxhichina.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)sender).setUsername("liguocai");
//发送者邮箱的密码
((JavaMailSenderImpl)sender).setPassword("Amindao2");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketFactory.port", "25");
pro.put("mail.smtp.socketFactory.fallback", "false");
//通过文件获取信息
((JavaMailSenderImpl)sender).setJavaMailProperties(pro);
//创建基本邮件信息
SimpleMailMessage mailMessage = new SimpleMailMessage();
//发送者地址,必须填写正确的邮件格式,否者会发送失败
mailMessage.setFrom("liguocai@amindao.com");
//邮件主题
if (args.length==3){
//邮件接收者的邮箱地址
mailMessage.setTo(args[0]);
mailMessage.setSubject(args[1]);
//邮件内容,简单的邮件信息只能添加文本信息
mailMessage.setText(args[2]);
}else{
//邮件接收者的邮箱地址
mailMessage.setTo("153277817@qq.com");
mailMessage.setSubject("测试邮件");
//邮件内容,简单的邮件信息只能添加文本信息
mailMessage.setText("测试");
}
//发送邮件,参数可以是数组
//sender.send(SimpleMailMessage[])
sender.send(mailMessage);
//MessagingException t;
//sender.send(mailMessage);
//sender.send((SimpleMailMessage)mailMessage);
}
}
依赖包:
<classpathentry kind="lib" path="lib/activation-1.0.jar"/>
<classpathentry kind="lib" path="lib/commons-logging.jar"/>
<classpathentry kind="lib" path="lib/spring-1.0.jar"/>
<classpathentry kind="lib" path="lib/mail-1.0.jar"/>