使用javamail发送邮件需要引入maven的依赖:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
单一邮件发送:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.*;
public class JavaMailTest {
public static void main(String[] args) throws MessagingException {
Properties properties =new Properties();
properties.setProperty("mail.smtp.auth","true");//认证
properties.setProperty("mail.transport.protocol","smtp");
Session session =Session.getInstance(properties);
session.setDebug(true);
Message message =new MimeMessage(session);
message.setText("Hello World");
message.setFrom(new InternetAddress("15201387834@163.com"));
Transport transport = session.getTransport();
transport.connect("smtp.163.com","15201387834","XXXXXXXXX");//此次XXXXXX为授权码
transport.sendMessage(message,new Address[]{new InternetAddress("15201387834@163.com")});
transport.close();
}
结果:
多客户邮件发送:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.*;
public class JavaMailTest {
public static void main(String[] args) throws MessagingException {
//创建Properties
Properties props=new Properties();
props.setProperty("mail.smtp.auth", "true");//认证
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.163.com");//服务器主机
Session session=Session.getInstance(props,
new Authenticator() //覆盖父类的方法
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("username","password");//返回用户名和密码
}
}
);
session.setDebug(true);
//创建message
Message msg=new MimeMessage(session);
msg.setFrom(new InternetAddress("test@163.com"));
msg.setSubject("中文主题");
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("test@163.com,test@sina.com"));
msg.setContent("<span style='color:red;'>这是java编写的邮件程序</span>", "text/html;charset=UTF-8");
Transport.send(msg);
}
遇到问题:
1:javax.mail.NoSuchProviderException: No provider for smpt
这是由于
props.setProperty("mail.smtp.auth", "true");//认证
这一句导致的,看smtp是否写对,大小写问题
2:javax.mail.AuthenticationFailedException
transport.connect("smtp.163.com","15201387834","XXXXXXXXX");//此次XXXXXX为授权码
username 填写自己的邮箱用户名 例如邮箱为123456@163.com就填123456
重点来了!!!!!!
password:此处应该填写我们第一步那里生成的授权码(我就是错在这里.......)