`

sendMail

 
阅读更多

 

sendMail

 

package net.chnbs.common.mail;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;

import net.chnbs.finance.constants.BusinessConstants;
import net.chnbs.util.SystemGlobals;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;


/**
 * <p>Description:use the javamail to send email!Must use sun's mail.jar,no apache jar. </p>
 */
@Component
public class SendMail {

	public final static Log log = LogFactory.getLog(SendMail.class);

	public static void main(String[] args) {
		String to = SystemGlobals.getProperty("NOTICE_MAIL_ADDRESS");
		log.info(to);
		SendMail mail = new SendMail();
		mail.setTo("system@qq.net");
		mail.setFrom("system@qq.net");
		mail.setSmtpServer("system@qq.net");
		mail.setUserName("system@qq.net");
		mail.setPassword("");
		mail.setSubject("关于网站有客户申请来电的通知");
		mail.setContent(String.format(BusinessConstants.NOTICE_CONTENT_STRING,
				"1342604332","小伙子哦"));
		mail.send();
	}
	
	private String to;			//接收人
	private String from;		//发送人
	private String smtpServer;	//smtp地址.
	private String userName;	
	private String password;
	private String subject;
	private String content;

	// 记录所有附件文件的集合,发送邮件的附件
	List<String> attachments = new ArrayList<String>();

	public SendMail() {
		super();
	}

	public SendMail(String to, String from, String smtpServer, String userName, String password, String subject,
			String content) {
		this.to = to;
		this.from = from;
		this.smtpServer = smtpServer;
		this.userName = userName;
		this.password = password;
		this.subject = subject;
		this.content = content;
	}

	//将字符串转换为中文,否则标题会发生乱码现象,QQ邮箱为UTF-8.用GBK.GB2312都会乱码.
	public String translateChinese(String strText) {
		try {
			// MimeUtility.encodeText(String text, String charset, String
			// encoding) throws java.io.UnsupportedEncodingException
			// text 头值 . charset 字符集。如果此参数为 null,则使用平台的默认字符集。
			// encoding 要使用的编码。当前支持的值为 "B" 和 "Q"。如果此参数为 null,则在大部分字符使用 ASCII
			// 字符集编码时使用 "Q" 编码;其他情况使用 "B" 编码。
			strText = MimeUtility.encodeText(new String(strText.getBytes(), "UTF-8"), "UTF-8", "B");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strText;
	}

	//增加附件
	public void addAttachment(String fname){
		attachments.add(fname);
	}
	
	public boolean send(){
		//创建邮件Session所需的Properties对象.API建议使用set而不是put(putall).
		Properties props=new Properties();
		props.setProperty("mail.smtp.host", smtpServer);
		props.setProperty("mail.smtp.auth", "true");
		//创建Session对象,代表JavaMail中的一次邮件会话.
		//Authenticator==>Java mail的身份验证,如QQ邮箱是需要验证的.所以需要用户名,密码.
		//PasswordAuthentication==>系统的密码验证.内部类获取,或者干脆写个静态类也可以.
		Session session=Session.getDefaultInstance(props, 
				new Authenticator() {
						public PasswordAuthentication getPasswordAuthentication(){
							return new PasswordAuthentication(userName, password);
						}
					}
				);
		
		try {
			//构造MimeMessage并设置相关属性值,MimeMessage就是实际的电子邮件对象.
			MimeMessage msg=new MimeMessage(session);
			//设置发件人
			msg.setFrom(new InternetAddress(from));
			//设置收件人,为数组,可输入多个地址.
			InternetAddress[] addresses={new InternetAddress(to)};
			//Message.RecipientType==>TO(主要接收人),CC(抄送),BCC(密件抄送)
			msg.setRecipients(Message.RecipientType.TO, addresses);
			//设置邮件主题,如果不是UTF-8就要转换下.
			//subject=translateChinese(subject);
			msg.setSubject(subject);
			
			//=====================正文部分===========
			//构造Multipart容器
			Multipart mp=new MimeMultipart();
			//=====================正文文字部分===========
			//向Multipart添加正文
			MimeBodyPart mbpContent=new MimeBodyPart();
			mbpContent.setText(content);
			//将BodyPart添加到MultiPart容器中
			mp.addBodyPart(mbpContent);
			
			//=====================正文附件部分===========
			//向MulitPart添加附件,遍历附件列表,将所有文件添加到邮件消息里
			for(String efile:attachments){
				MimeBodyPart mbpFile=new MimeBodyPart();
				//以文件名创建FileDataSource对象
				FileDataSource fds=new FileDataSource(efile);
				//处理附件
				mbpFile.setDataHandler(new DataHandler(fds));
				mbpFile.setFileName(fds.getName());
				//将BodyPart添加到Multipart容器中
				mp.addBodyPart(mbpFile);
			}
			attachments.clear();
			//向MimeMessage添加Multipart
			msg.setContent(mp);
			msg.setSentDate(new Date());
			//发送邮件,使用如下方法!
			Transport.send(msg);
			log.info("邮件发送成功!--------->"+this.to+"----"+this.getContent());
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	
	public String getTo() {
		return to;
	}

	public void setTo(String to) {
		this.to = to;
	}

	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
	}

	public String getSmtpServer() {
		return smtpServer;
	}

	public void setSmtpServer(String smtpServer) {
		this.smtpServer = smtpServer;
	}

	public String getUserName() {
		return userName;
	}

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

	public String getPassword() {
		return password;
	}

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

	public String getSubject() {
		return subject;
	}

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

	public String getContent() {
		return content;
	}

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

 

分享到:
评论

相关推荐

    linux5中sendmail安装文件

    在Linux系统中,Sendmail是一款历史悠久且广泛应用的邮件传输代理(MTA)软件,它负责在互联网上发送和接收电子邮件。在Linux5环境下,安装Sendmail是构建服务器基础架构的重要步骤,尤其对于需要处理大量电子邮件...

    sendmail服务器的搭建

    ### sendmail服务器的搭建 #### 一、原理介绍 Sendmail是一种邮件传输代理(MTA),主要用于在Linux或Unix系统中处理电子邮件的发送和接收。它支持多种协议,包括SMTP(简单邮件传输协议)、POP3(邮局协议版本3)...

    sendmail

    **标题:“sendmail”** **描述详解:** 在IT领域,`sendmail`是一个历史悠久的邮件传输代理(MTA),广泛用于Unix-like系统,用于发送和转发电子邮件。它在服务器端扮演着关键角色,允许系统通过SMTP(Simple ...

    Windows如何使用sendmail 发邮件

    在Windows环境中,使用sendmail发送邮件可能并非直截了当,因为sendmail通常是Linux环境下的一个标准组件。但在Windows上,我们可以通过模拟Linux环境或使用兼容的替代方案来实现这一功能。以下是一份详细的步骤指南...

    Sendmail邮件服务器搭建

    Sendmail 邮件服务器搭建 Sendmail 邮件服务器是一种流行的开源邮件服务器软件,广泛应用于 Linux 操作系统中。在本篇文章中,我们将介绍如何搭建和配置 Sendmail 邮件服务器,包括安装 Sendmail 软件包、配置 ...

    SendMail

    "SendMail"是一个用于发送电子邮件的工具,主要适用于Java开发者。这个工具可能包含了处理SMTP(简单邮件传输协议)和相关的邮件APIs,使得开发者能够轻松地在他们的应用程序中集成邮件发送功能。根据提供的标签,...

    SENDMAIL

    "SENDMAIL"是一款专为Delphi开发者设计的强大邮件发送控件,它主要针对Delphi 6和7这两个版本提供服务。这款控件的核心优势在于其能够绕过邮件服务器的验证过程,这意味着用户在发送邮件时无需经过常规的身份验证...

    Linux 禁止sendmail 自启动

    ### Linux 禁止sendmail 自启动 在Linux系统中,`sendmail`是一个非常重要的邮件传输代理(MTA),它负责处理系统内的电子邮件发送任务。然而,在某些情况下,我们可能并不希望`sendmail`服务随系统启动而自动运行...

    sendmail for win32

    在Windows环境下使用Sendmail,首先需要下载并安装sendmail.exe,这是Sendmail的执行文件。同时,ReadMe.html文件包含了详细的安装和配置指南,是初学者的重要参考文档。sendmail.ini则是Sendmail的配置文件,通过...

    sendmail发送邮件的命令行工具

    【标题】:sendmail发送邮件的命令行工具 在IT领域,sendmail是一个经典的命令行工具,用于在Unix/Linux环境中发送电子邮件。它以其简洁的接口和强大的功能而著名,不仅适用于系统管理员进行自动化任务,也适合开发...

    linux_sendmail配置详解

    ### Linux Sendmail配置详解 #### 一、电子邮件系统概述 在深入探讨Sendmail配置之前,我们首先了解一下电子邮件系统的几个核心组件及其作用。 1. **MUA(Mail User Agent,邮件用户代理)**:MUA是用户与邮件...

    Sendmail

    下面将详细介绍Sendmail的使用方法、关键概念以及与其相关的技术点。 1. **SMTP服务器配置**:在使用Sendmail之前,你需要知道SMTP服务器的地址和端口。这通常可以从你的邮件服务提供商(如Gmail, Yahoo, 或者自建...

    sendmail module for bugzilla

    -rw-r--r-- 1 leon leon 3494 2009-08-21 13:05 sendmail_8.14.3-9ubuntu1_all.deb -rw-r--r-- 1 leon leon 357946 2009-08-21 13:05 sendmail-base_8.14.3-9ubuntu1_all.deb -rw-r--r-- 1 leon leon 733018 2009-08...

    sendmail.7z

    标题中的"sendmail.7z"表明这是一个与sendmail相关的压缩文件,sendmail是一个广泛使用的邮件传输代理,常用于在Linux或Unix系统中处理电子邮件。它允许程序通过SMTP(Simple Mail Transfer Protocol)发送邮件,是...

    sendmail_Sendmail_

    sendmail for windows emulate linux sendmail

    Linux Sendmail 服务器详细安装配置手册

    Linux Sendmail 服务器详细安装配置手册 SendMail 服务器配置任务是一个复杂的过程,需要逐步完成多个任务,包括配置单邮件服务器、配置邮件别名、配置邮件列表、配置邮件访问控制列表、配置双邮件服务器等。下面...

    linux中sendmail发送邮件成功但收不到邮件.docx

    Linux 中 Sendmail 发送邮件成功但收不到邮件解决方案 Sendmail 是一个流行的邮件传输代理(Mail Transfer Agent,MTA),它可以帮助用户发送电子邮件。但是,在 Linux 中使用 Sendmail 发送邮件时,可能会遇到...

    sendmail 的 3个安装包cf ,doc,devel

    这三个安装包——sendmail-cf、sendmail-doc和sendmail-devel,都是sendmail系统的不同组成部分,针对不同的需求和用途。 1. **sendmail-cf**:配置文件集 sendmail-cf-8.13.1-2.i386.rpm 包含了sendmail的配置...

    sendmail-8.13.1-2.i386一套RPM格式安装包

    标题中的"sendmail-8.13.1-2.i386"指的是一个特定版本的Sendmail邮件服务器软件,这是互联网上广泛使用的MTA(邮件传输代理)。RPM是Red Hat Package Manager的缩写,是一种在Linux系统中管理软件包的工具,尤其常见...

Global site tag (gtag.js) - Google Analytics