邮件发送失败?WireShark帮你找原因

    xiaoxiao2025-02-05  15

    1.发现问题阶段   使用以前的发送邮件的java类,今天发送失败。报错如下: (因为properties属性 mail.debug 设成了true,所以看到详情) 于是修改程序,增加了蓝色部分一句。 再次运行,发现修改有作用。但仍报错。控制台报错如下: 发送代码部分如下,为啥上面的日志中MAIL FROM 这里这么奇怪换行了???是不是这里的问题??? 2.使用wireshark确定问题  于是 祭出wireshark神器,安装foxmail,对比程序发送数据和foxmail发送数据。 程序发 送时wireshark数据截取截图: 程 faxmail发送时wireshark数据截取截图: 3.解决问题   于是开始重点检查setFrom参数的设置,发现还有一个setFrom( InternetAddress  i nternetAddress )方法。于是果断改成 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("****"); //配置文件,用于实例化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"/>
    转载请注明原文地址: https://ju.6miu.com/read-1296133.html
    最新回复(0)