手把手教你用java发送邮件
一、学习目的
1、学会用jmail发送邮件
2、学会自动发送邮件需要的一些设置
二、准备内容(以163邮箱示范)
1、个人邮箱
首先登录163个人邮箱,然后在个人页面-设置--POP3/SMTP/IMAP。
在POP3/SMTP/IMAP处点击开通POP3/SMTP服务和IMAP/SMTP服务
点击开通时,通过手机验证进行设置授权码,授权码一会需要使用到。
这样我们就基本设置完了。
2、企业邮箱
基本步骤是差不多,在设置处设置客户端授权密码,但是开通POP3/SMTP/IMAP服务可能有点麻烦,需要下载网易闪电邮进行设置(我只知道这种方法,在网页版并没有找到设置POP3/SMTP/IMAP的地方),点击左上角的邮箱-邮箱设置-账户设置-高级设置进行开通POP3/SMTP/IMAP服务。
三、代码处理
1、有三处需要自己去修改,分别是FromEmail、Indentify和main中的SendEmail函数的收件人邮箱需要自己设置;Indentify是授权密码。
2、 个人邮箱自动发送邮件使用senderImpl.setHost("smtp.qiye.163.com"); 企业邮箱的是senderImpl.setHost("smtp.qiye.163.com");
3、可以设置为发送给多个收件人,自己阅读代码后修改即可。
4、需要使用jmail和spring mail。后者需要导入spring context support。下载地址在
http://mvnrepository.com/artifact/org.springframework/spring-context-support
实现代码:
package other;
import java.util.Properties;
import java.util.Random;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
public class testjava {
private static String FromEmail = "发送人的邮箱";
private static String Identify = "授权密码";
public static String SendEmail(String toEmail,String text) throws Exception{
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设定mail server
// 企业邮箱时使用 senderImpl.setHost("smtp.qiye.163.com");
senderImpl.setHost("smtp.163.com"); // 个人邮箱
String suject = "邮箱验证";
// 建立邮件消息
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 设置收件人,寄件人 用数组发送多个邮件
// String[] array = new String[] {"sun111@163.com","sun222@sohu.com"};
// mailMessage.setTo(array);
//手动生成六位验证码
String code = "";
Random random = new Random();
for(int i = 0; i < 6 ;i++){
code += random.nextInt(10);
}
mailMessage.setTo(toEmail);
mailMessage.setFrom(FromEmail);
mailMessage.setSubject(suject);
mailMessage.setText(text + code);
senderImpl.setUsername(FromEmail); // 根据自己的情况,设置username
senderImpl.setPassword(Identify); // 根据自己的情况, 设置password
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
prop.put("mail.smtp.timeout", "25000");
senderImpl.setJavaMailProperties(prop);
// 发送邮件
senderImpl.send(mailMessage);
return code;
}
// 设置邮箱内容
public static MimeMessage createSimpleMail(Session session,String FromMail,
String ToEmail,String content)
throws AddressException,MessagingException{
//创建邮件对象
MimeMessage mm=new MimeMessage(session);
//设置发件人
mm.setFrom(new InternetAddress(FromMail));
//设置收件人
mm.setRecipient(Message.RecipientType.TO, new InternetAddress(ToEmail));
//设置抄送人
// mm.setRecipient(Message.RecipientType.CC, new InternetAddress("用户名@163.com"));
mm.setSubject("邮箱验证测试");
mm.setContent(content, "text/html;charset=gbk");
return mm;
}
public static void main(String[] args) throws Exception{
SendEmail("收件人的邮箱","验证码是:");
}
}
这样我们就可以使用代码自动发送邮件了。