手把手教你用java发送邮件

手把手教你用java发送邮件


一、学习目的

 1、学会用jmail发送邮件

 2、学会自动发送邮件需要的一些设置


二、准备内容(以163邮箱示范)

  1、个人邮箱

    首先登录163个人邮箱,然后在个人页面-设置--POP3/SMTP/IMAP。

   手把手教你用java发送邮件_第1张图片

   在POP3/SMTP/IMAP处点击开通POP3/SMTP服务和IMAP/SMTP服务

   手把手教你用java发送邮件_第2张图片

 点击开通时,通过手机验证进行设置授权码,授权码一会需要使用到

手把手教你用java发送邮件_第3张图片

  这样我们就基本设置完了。

2、企业邮箱

 基本步骤是差不多,在设置处设置客户端授权密码,但是开通POP3/SMTP/IMAP服务可能有点麻烦,需要下载网易闪电邮进行设置(我只知道这种方法,在网页版并没有找到设置POP3/SMTP/IMAP的地方),点击左上角的邮箱-邮箱设置-账户设置-高级设置进行开通POP3/SMTP/IMAP服务

手把手教你用java发送邮件_第4张图片

三、代码处理

  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[] {"[email protected]","[email protected]"};  
        // 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("收件人的邮箱","验证码是:");
	}

}


这样我们就可以使用代码自动发送邮件了。

你可能感兴趣的:(Java)