参考网上的资料,写一个小的case,主要是加深记忆吧
开发前需要准备两个jar包,我用的是javamail-1.4.3:
mail.jar
lib/smtp.jar
代码:
package javamail.mailAPI; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 发送邮件 * * @author mayuwei * @date 2011-4-19 * @User mayuwei * @inof util/javamail/mailAPI/SenderMail.java */ public class SenderMail { /** * @param args */ public static void main(String[] args) { /* * 获得并设置连接消息 */ Properties properties = System.getProperties(); // 设置smtp服务器地址,这里使用的是新浪邮箱的smtp服务器 properties.put("mail.smtp.host", "smtp.sina.cn"); // 需要验证 properties.put("mail.smtp.auth", true); // 设置控制台是否显示debug信息 properties.put("mail.debug", "true"); /* * 通过单例模式获得一个会话对象 */ Session session = Session.getDefaultInstance(properties, new Authenticator() { /* * 返回连接会话时验证对象 * (non-Javadoc) * @see javax.mail.Authenticator#getPasswordAuthentication() */ @Override public PasswordAuthentication getPasswordAuthentication() { // 设置用户名和密码 return new PasswordAuthentication("your_email@domain.com", "your_pwd"); } }); /* * 初始化一个消息对象 */ MimeMessage message = new MimeMessage(session); try { /* * 设置主题 */ message.setSubject("听说你不接受我的邮件,是吗小子?"); /* * 设置发送内容 */ message.setText("test send..."); /* * 设置发件人 */ message.setFrom(new InternetAddress("mail_sender@sina.cn")); /* * 设置收件人 */ message.setRecipient(Message.RecipientType.TO, new InternetAddress("1090705149@qq.com")); /* * 发送邮件 */ Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } } }
遇到的问题:
由于mail.smtp.auth默认的false,所以要显示的设置为true,会抛:
com.sun.mail.smtp.SMTPSendFailedException: 530 Authentication required at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829) at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886) at javax.mail.Transport.send0(Transport.java:191) at javax.mail.Transport.send(Transport.java:120) at javamail.mailAPI.SenderMail.main(SenderMail.java:82)