• (转)JavaMail邮件发送-发送一个文本邮件和一些问题说明


    需要下载的JAR包:

    JavaMail:http://www.oracle.com/technetwork/java/javamail/index.html 

    JAF:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html 

    加入的包有:mail.jar activation.jar

    你要准备一个邮箱账户,就用网易的吧,然后打开SMTP功能

     

     

    关于网易的一些端口信息参考下面:

     每个公司都是不一样的,使用SSL的和不实用的也不一样

     使用的开发和编译环境是JDK1.4,如果你使用的是JDK1.5环境,那么你的环境需要修改一些东西,找到 javaee.jar 删除里面的 mial 包,否则会有冲突

    否则会报错:

    Java代码  收藏代码
    1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream  
    2.     at javax.mail.Session.loadProvidersFromStream(Session.java:928)  
    3.     at javax.mail.Session.access$000(Session.java:174)  
    4.     at javax.mail.Session$1.load(Session.java:870)  
    5.     at javax.mail.Session.loadResource(Session.java:1084)  
    6.     at javax.mail.Session.loadProviders(Session.java:889)  
    7.     at javax.mail.Session.<init>(Session.java:210)  
    8.     at javax.mail.Session.getInstance(Session.java:249)  
    9.     at com.mail.TextMail.main(TextMail.java:22)  

     下面我直接贴代码了

    Java代码  收藏代码
    1. package com.mail;  
    2. import java.util.Date;  
    3. import java.util.Properties;  
    4. import javax.mail.Message;  
    5. import javax.mail.Session;  
    6. import javax.mail.Transport;  
    7. import javax.mail.internet.InternetAddress;  
    8. import javax.mail.internet.MimeMessage;  
    9. import javax.mail.internet.MimeUtility;  
    10. // 如果你使用JDK1.4以上运行 会出现 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream  
    11. // 需要你找到 javaee.jar 删掉 里面的 mail 包  
    12. public class TextMail {  
    13.     public static void main(String[] args) throws Exception {  
    14.         // 配置文件对象  
    15.         Properties props = new Properties();  
    16.         // 邮箱服务地址  
    17.         props.put( "mail.smtp.host ", "smtp.163.com ");       
    18.         // 是否进行验证  
    19.         props.put("mail.smtp.auth", "true");  
    20.         // 创建一个会话  
    21.         Session session = Session.getInstance(props);  
    22.         // 打开调试,会打印与邮箱服务器回话的内容  
    23.         session.setDebug(true);  
    24.         Message message = new MimeMessage(session);  
    25.         // 如果发送人没有写对,那么会出现 javamail 550 Invalid User  
    26.         // 如果发送人写的和使用的帐号不一致,则会出现 553 Mail from must equal authorized user  
    27.         InternetAddress from = new InternetAddress("test20120711120200@163.com");  
    28.         from.setPersonal(MimeUtility.encodeText("java小强<test20120711120200@163.com>"));  
    29.         message.setFrom(from);  
    30.         InternetAddress to = new InternetAddress("455213313@qq.com");  
    31.         message.setRecipient(Message.RecipientType.TO, to);  
    32.         message.setSubject(MimeUtility.encodeText("强哥邀请,谁敢不从!"));  
    33.         message.setText("强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!");  
    34.         message.setSentDate(new Date());  
    35.         Transport transport = session.getTransport("smtp");  
    36.         // 具体你使用邮箱的smtp地址和端口,应该到邮箱里面查看,如果使用了SSL,网易的端口应该是 465/994  
    37.         transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");  
    38.         transport.sendMessage(message, message.getAllRecipients());  
    39.         transport.close();  
    40.         System.out.println("发送完毕");  
    41.     }  
    42. }  

    需要注意的有

    Java代码  收藏代码
    1. InternetAddress from = new InternetAddress("test20120711120200@163.com");  

    Java代码  收藏代码
    1. transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");  

    这两个邮箱的地址必须相同,否则会出现

    Java代码  收藏代码
    1. Exception in thread "main" javax.mail.MessagingException: 553 Mail from must equal authorized user  
    2.   
    3.     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)  
    4.     at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)  
    5.     at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)  
    6.     at com.mail.TextMail.main(TextMail.java:38)  

    你上网查都是说用户验证不对,其实一般大家都是按照别人代码拷贝的,然后修改了用户和密码,怎么会不对!

    我这个账户和密码都是可以用的,对不起网易了!

    由于上面我设置了打印调试,所以你在控制台会看到如下内容:

    Java代码  收藏代码
    1. DEBUG: setDebug: JavaMail version 1.3.1  
    2. DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]  
    3. DEBUG SMTP: useEhlo true, useAuth true  
    4. DEBUG SMTP: trying to connect to host "smtp.163.com", port 25  
    5.   
    6. 220 163.com Anti-spam GT for Coremail System (163com[20111010])  
    7. DEBUG SMTP: connected to host "smtp.163.com", port: 25  
    8.   
    9. EHLO cuisuqiang  
    10. 250-mail  
    11. 250-PIPELINING  
    12. 250-AUTH LOGIN PLAIN  
    13. 250-AUTH=LOGIN PLAIN  
    14. 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj  
    15. 250-STARTTLS  
    16. 250 8BITMIME  
    17. DEBUG SMTP: Found extension "PIPELINING", arg ""  
    18. DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"  
    19. DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"  
    20. DEBUG SMTP: Found extension "coremail", arg "1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj"  
    21. DEBUG SMTP: Found extension "STARTTLS", arg ""  
    22. DEBUG SMTP: Found extension "8BITMIME", arg ""  
    23. DEBUG SMTP: Attempt to authenticate  
    24. AUTH LOGIN  
    25. 334 dXNlcm5hbWU6  
    26. dGVzdDIwMTIwNzExMTIwMjAw  
    27. 334 UGFzc3dvcmQ6  
    28. dGVzdDEyMzQ1Ng==  
    29. 235 Authentication successful  
    30. DEBUG SMTP: use8bit false  
    31. MAIL FROM:<test20120711120200@163.com>  
    32. 250 Mail OK  
    33. RCPT TO:<455213313@qq.com>  
    34. 250 Mail OK  
    35. DEBUG SMTP: Verified Addresses  
    36. DEBUG SMTP:   455213313@qq.com  
    37. DATA  
    38. 354 End data with <CR><LF>.<CR><LF>  
    39. Message-ID: <14518194.1341995865564.JavaMail.Administrator@cuisuqiang>  
    40. Date: Wed, 11 Jul 2012 16:37:45 +0800 (CST)  
    41. From: "=?GBK?Q?java=D0=A1=C7=BF<test20120711120200@163.com>?=" <test20120711120200@163.com>  
    42. To: 455213313@qq.com  
    43. Subject: =?GBK?B?x7+459H7x+ujrMutuNKyu7TTo6E=?=  
    44. Mime-Version: 1.0  
    45. Content-Type: text/plain; charset=GBK  
    46. Content-Transfer-Encoding: quoted-printable  
    47.   
    48. =C7=BF=B8=E7=D1=FB=C7=EB=C4=E3=B7=C3=CE=CA=CE=D2=B5=C4=B2=A9=BF=CD=A3=BAhtt=  
    49. p://cuisuqiang.iteye.com/=A3=A1  
    50. .  
    51. 250 Mail OK queued as smtp2,DNGowEB52UhcO_1PZmMMCA--.937S2 1341995868  
    52. QUIT  

    这些都是程序与邮件服务商的一些交互信息!

    请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

    或支持我的个人博客,地址:http://www.javacui.com

  • 相关阅读:
    Python3.x和Python2.x的区别
    python 列表 元组 字典
    Wireshark TCP报文到达确认(ACK)机制
    Wireshark Tcp三次握手
    Python Vim配置 Win7x64
    Workstation guest fails to restart or resume
    python 枚举目录下所有子目录和文件,输出列表
    Python按行读文件 高级
    python 注释
    十一、设备初始化(ADK4.0)
  • 原文地址:https://www.cnblogs.com/antyi/p/5607857.html
Copyright © 2020-2023  润新知