java 发送邮件实例

本篇文章全部是代码,可以直接复制使用。

MailSenderInfo:

package com.wswhr.LoginServer.util.mail;

import java.util.Properties;

public class MailSenderInfo {

	// 发送邮件的服务器的IP和端口
    private String mailServerHost;
    private String mailServerPort = "25";    

    // 邮件发送者的地址
    private String fromAddress;
    private String fromAddressShow;

    public String getFromAddressShow() {
		return fromAddressShow;
	}
	public void setFromAddressShow(String fromAddressShow) {
		this.fromAddressShow = fromAddressShow;
	}
	// 邮件接收者的地址
    private String toAddress;
    // 登陆邮件发送服务器的用户名和密码
    private String userName;
    private String password;
    // 是否需要身份验证    

    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String content;
    // 邮件附件的文件名
    private String[] attachFileNames;    

    /** *//**
      * 获得邮件会话属性
      */    

    public Properties getProperties(){
      Properties p = new Properties();
      p.put("mail.smtp.host", this.mailServerHost);
      p.put("mail.smtp.port", this.mailServerPort);
      p.put("mail.smtp.auth", validate ? "true" : "false");
      return p;
    }    

    public String getMailServerHost() {
      return mailServerHost;
    }
    public void setMailServerHost(String mailServerHost) {
      this.mailServerHost = mailServerHost;
    }   

    public String getMailServerPort() {
      return mailServerPort;
    }
    public void setMailServerPort(String mailServerPort) {
      this.mailServerPort = mailServerPort;
    }   

    public boolean isValidate() {
      return validate;
    }
    public void setValidate(boolean validate) {
      this.validate = validate;
    }   

    public String[] getAttachFileNames() {
      return attachFileNames;
    }
    public void setAttachFileNames(String[] fileNames) {
      this.attachFileNames = fileNames;
    }   

    public String getFromAddress() {
      return fromAddress;
    }
    public void setFromAddress(String fromAddress) {
      this.fromAddress = fromAddress;
    }   

    public String getPassword() {
      return password;
    }
    public void setPassword(String password) {
      this.password = password;
    }  

    public String getToAddress() {
      return toAddress;
    }
    public void setToAddress(String toAddress) {
      this.toAddress = toAddress;
    }    

    public String getUserName() {
      return userName;
    }
    public void setUserName(String userName) {
      this.userName = userName;
    }   

    public String getSubject() {
      return subject;
    }
    public void setSubject(String subject) {
      this.subject = subject;
    }   

    public String getContent() {
      return content;
    }
    public void setContent(String textContent) {
      this.content = textContent;
    }    

}

MailService:

package com.wswhr.LoginServer.util.mail;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;

import com.wswhr.LoginServer.util.mail.MailSenderInfo;
import com.wswhr.LoginServer.util.mail.SimpleMailSender;

@Service
public class MailService {

	public boolean sendMail(String toAddres, String title, String content) {
		try {
			Map<String,String> mail = getServiceInfoByMainProperties("aliyun");
			MailSenderInfo mailInfo = new MailSenderInfo();
			mailInfo.setMailServerHost(mail.get("smtpaddress"));
			mailInfo.setMailServerPort(mail.get("smtpport"));
			mailInfo.setValidate(true);
			mailInfo.setUserName(mail.get("username"));
			mailInfo.setPassword(mail.get("password"));//您的邮箱密码

			mailInfo.setFromAddress(mail.get("fromemail"));
			mailInfo.setFromAddressShow("wswhr@wswhr.com");
			mailInfo.setToAddress(toAddres);
			mailInfo.setSubject(title);
			mailInfo.setContent(content);
			SimpleMailSender sms = new SimpleMailSender();
			sms.sendTextMail(mailInfo);// 发送html格式
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean sendTextMail(String toAddres, String title, String content) {
		try {
			Map<String,String> mail = getServiceInfoByMainProperties("aliyun");
			MailSenderInfo mailInfo = new MailSenderInfo();
			mailInfo.setMailServerHost(mail.get("smtpaddress"));
			mailInfo.setMailServerPort(mail.get("smtpport"));
			mailInfo.setValidate(true);
			mailInfo.setUserName(mail.get("username"));
			mailInfo.setPassword(mail.get("password"));// 您的邮箱密码

			mailInfo.setFromAddress(mail.get("fromemail"));
			mailInfo.setFromAddressShow("wswhr@wswhr.com");
			mailInfo.setToAddress(toAddres);
			mailInfo.setSubject(title);
			mailInfo.setContent(content);
			SimpleMailSender sms = new SimpleMailSender();
			sms.sendTextMail(mailInfo);// 发送html格式

		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}

	private static Map<String,String> getServiceInfoByMainProperties(String mailType){
		ClassPathResource cr = new ClassPathResource("mail.properties");// 会重新加载spring框架
		Properties pros = new Properties();
		Map<String,String> mailInfo = new HashMap<String,String>() ;

		try {
			pros.load(cr.getInputStream());
			if(mailType.equals("aliyun")){
				mailInfo.put("smtpaddress", pros.getProperty("aliyun.smtpaddress"));
				mailInfo.put("smtpport", pros.getProperty("aliyun.smtpport"));
				mailInfo.put("fromemail", pros.getProperty("aliyun.fromemail"));
				mailInfo.put("username", pros.getProperty("aliyun.username"));
				mailInfo.put("password", pros.getProperty("aliyun.password"));
			}else if(mailType.equals("qq")){
				mailInfo.put("smtpaddress", pros.getProperty("qq.smtpaddress"));
				mailInfo.put("smtpport", pros.getProperty("qq.smtpport"));
				mailInfo.put("fromemail", pros.getProperty("qq.fromemail"));
				mailInfo.put("username", pros.getProperty("qq.username"));
				mailInfo.put("password", pros.getProperty("qq.password"));
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

		return mailInfo;
	}

}

MyAuthenticator:

package com.wswhr.LoginServer.util.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator{
    String userName=null;
    String password=null;   

    public MyAuthenticator(){
    }
    public MyAuthenticator(String username, String password) {
        this.userName = username;
        this.password = password;
    }
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(userName, password);
    }
}   

SimpleMailSender:

package com.wswhr.LoginServer.util.mail;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SimpleMailSender  {    

/**
  * 以文本格式发送邮件
  * @param mailInfo 待发送的邮件的信息
  */
    public boolean sendTextMail(MailSenderInfo mailInfo) {    

      // 判断是否需要身份认证
      MyAuthenticator authenticator = null;
      Properties pro = mailInfo.getProperties();
      if (mailInfo.isValidate()) {
      // 如果需要身份认证,则创建一个密码验证器
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
      }
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
      try {
      // 根据session创建一个邮件消息
      Message mailMessage = new MimeMessage(sendMailSession);

      //设置中文发件人
      String name = "";
      name=javax.mail.internet.MimeUtility.encodeText("系统管理员");

      // 创建邮件发送者地址
      Address from = new InternetAddress(mailInfo.getFromAddress());
      // 设置邮件消息的发送者    

      mailMessage.setFrom(new InternetAddress(name+" <"+from+">"));
      //mailMessage.setFrom(from);
      // 创建邮件的接收者地址,并设置到邮件消息中
      Address to = new InternetAddress(mailInfo.getToAddress());
      mailMessage.setRecipient(Message.RecipientType.TO,to);
      // 设置邮件消息的主题
      mailMessage.setSubject(mailInfo.getSubject());
      // 设置邮件消息发送的时间
      mailMessage.setSentDate(new Date());
      // 设置邮件消息的主要内容
      String mailContent = mailInfo.getContent();
      mailMessage.setText(mailContent);
      // 发送邮件
      Transport.send(mailMessage);
      return true;
      } catch (MessagingException ex) {
          ex.printStackTrace();
      } catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	}
      return false;
    }    

    /** *//**
      * 以HTML格式发送邮件
      * @param mailInfo 待发送的邮件信息
      */
    public boolean sendHtmlMail(MailSenderInfo mailInfo){
      // 判断是否需要身份认证
      MyAuthenticator authenticator = null;
      Properties pro = mailInfo.getProperties();
      //如果需要身份认证,则创建一个密码验证器
      if (mailInfo.isValidate()) {
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
      }
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
      try {
      // 根据session创建一个邮件消息
      Message mailMessage = new MimeMessage(sendMailSession);
      // 创建邮件发送者地址
      Address from = null;
      if(mailInfo.getFromAddressShow()!=null && !mailInfo.getFromAddressShow().equals("")){
    	  try {
			from = new InternetAddress(mailInfo.getFromAddress(),mailInfo.getFromAddressShow());
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
      }else{
    	  from = new InternetAddress(mailInfo.getFromAddress());
      }
      // 设置邮件消息的发送者
      mailMessage.setFrom(from);
      // 创建邮件的接收者地址,并设置到邮件消息中
      Address to = new InternetAddress(mailInfo.getToAddress());
      // Message.RecipientType.TO属性表示接收者的类型为TO
      mailMessage.setRecipient(Message.RecipientType.TO,to);
      // 设置邮件消息的主题
      mailMessage.setSubject(mailInfo.getSubject());
      // 设置邮件消息发送的时间
      mailMessage.setSentDate(new Date());
      // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
      Multipart mainPart = new MimeMultipart();
      // 创建一个包含HTML内容的MimeBodyPart
      BodyPart html = new MimeBodyPart();
      // 设置HTML内容
      html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
      mainPart.addBodyPart(html);
      // 将MiniMultipart对象设置为邮件内容
      mailMessage.setContent(mainPart);
      // 发送邮件
      Transport.send(mailMessage);
      return true;
      } catch (MessagingException ex) {
          ex.printStackTrace();
      }
      return false;
    }
}

Test:

package com.wswhr.LoginServer.util.mail;

public class Test {

	public static void main(String[] args) {
		MailService m = new MailService();
		m.sendMail("1286238812@qq.com", "测试邮件发送", "发送成功");
		// 这个类主要是设置邮件

//		MailSenderInfo mailInfo = new MailSenderInfo();
//
//		mailInfo.setMailServerHost("smtp.wswhr.com");
//		mailInfo.setMailServerPort("25");
//		mailInfo.setValidate(true);
//
//		mailInfo.setUserName("wswhr@wswhr.com");
//		mailInfo.setPassword("    ");// 您的邮箱密码
//
//		mailInfo.setFromAddress("wswhr@wswhr.com");
//		mailInfo.setToAddress("1286238812@qq.com");
//		mailInfo.setSubject("test111");
//		mailInfo.setContent("德玛西亚666");
//		// 这个类主要来发送邮件
//		SimpleMailSender sms = new SimpleMailSender();
//		sms.sendTextMail(mailInfo);// 发送文体格式
//		sms.sendHtmlMail(mailInfo);// 发送html格式

	}

}

mail.properties:

# wswhr@wswhr.com  1286238812@qq.com
# 如果用阿里企业邮箱,则,邮箱地址是,smtp.mxhichina.com    /  或者  自己的邮箱地址,比如我的域名是wswhr.com ,则邮箱地址是,smtp.wswhr.com
# 腾讯的邮箱 smtp.qq.com

# 阿里云邮箱配置
aliyun.smtpaddress=smtp.mxhichina.com
aliyun.smtpport=25
aliyun.fromemail=hr@wswhr.com
# 用户名
aliyun.username=hr@wswhr.com
# 密码
aliyun.password=

最后的密码,是你的邮箱登录密码。

时间: 2025-01-04 03:26:40

java 发送邮件实例的相关文章

简单Java 发送邮件实例代码

  这里用apache的commons-email(http://commons.apache.org/proper/commons-email/download_email.cgi)和java mail()发送邮件. 我的需求仅仅是在系统异常时发个报警邮件,所以,不涉及到附件之类的东西,代码很简单:    代码如下 复制代码 public static void sendMail(String receiverAddress,String subject,String message)  {

java发送邮件示例讲解_java

本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下 1.邮件协议 发邮件的:SMTP (Simple Mail Transport  Protocal) 收邮件的协议:pop3 (Post Office Protocal 3) IMAP 新协议 发邮件也可以收邮件. (一步步的与服务器交互) SMTP : 2.收发邮件的过程: 一般情况下,smtp和pop3是两个服务器(主机). Smtp邮件的端口为25. POP3 端口 为110. 发邮件示例 1).安装foxmail: 2).

利用Java发送邮件的实现代码_java

前言 大家请注意:以下代码使用的测试邮箱为126的邮箱,实测可用,注意,个人测试时,注意发送的邮件内容,邮件内容邮箱服务器审查较严格,少有不慎就会被判定为垃圾邮件,进而就会给你返回一个错误码: 实例代码 import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentica

使用 PHPMAILER 发送邮件实例

  <?php include ('class/class.phpmailer.php'); $config = array( 'host'=>'smtp.163.com', 'port'=>'25', 'user'=>'***', 'passwd'=>'****', 'from'=>'juva_zz@163.com', 'fromname'=>'郑州', ); $subject = 'this is a test mail'; $body = '<tabl

Java发送邮件

public class MailSender { /** * 发送单个邮件 * @throws Exception */ public void sendMail() throws Exception{ Properties props = new Properties();//创建属性对象 props.put("mail.smtp.host", getHost());//设置smtp服务器地址 props.put("mail.smtp.auth", "

WTP1.0开发WebService之Java Class实例

在创建web service 之前,确定你已经安装Tomcat.(本文使用Tomcat5.0) 1.创建一个动态web工程(dynamic web project)取名为ConverterProj.配置全部默认. 2.在package wtp下建立java文件Converter.java Converter.java package wtp; public class Converter { public float celsiusToFarenheit(float celsius){ retu

使用java发送邮件出错

问题描述 使用java发送邮件出错 之前测试能发送邮件的,今天又试了一下出问题了....不知道什么原因,求大神 DEBUG: setDebug: JavaMail version 1.4.1 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth

java发送邮件不能带&amp;amp;quot;&amp;amp;amp;&amp;amp;quot;

问题描述 java发送邮件不能带"&" 如题 , url中带了&自动把后面的字符截掉了 , 请问如何避免 解决方案 java发送邮件java 发送邮件Java发送邮件 解决方案二: html字符转义,用 %26 代替http://www.tuicool.com/articles/YzYfaa 解决方案三: 用encodeURI试试呢? 解决方案四: 原来不是邮件发不过去, 是UMEditor没有获取到&后面的东西 , <script type="

java 框架 spring-请问Spring是怎么个意思?我写了个java小实例 还是不太明白~(新手菜鸟)

问题描述 请问Spring是怎么个意思?我写了个java小实例 还是不太明白~(新手菜鸟) port org.springframework.*; import org.springframework.context.support.FileSystemXmlApplicationContext; 难道.* 不 包括后面那一串吗?为啥注释了长的import 报错FileSystemXmlApplicationContext cannot be resolved to a type 解决方案 im