下面代码是利用javaメール包封装了一个发送邮件的类
Import java.io.file; 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.message.message.message.message.message.message.message.message.message.message javax.mail.multipart; Import javax.mail.session; import javax.mail.transport; import javax.mail.internet.addressexception; Import javax.mail.internet.internetAddress;インポートjavax.mail.internet.mimebodypart; import javax.mail.mail.mail.mimemememememememememememememememet javax.mail.internet.mimemultipart; public class sendmail {private static final string mail_address_regex = "^[// w //. = extron@ [//] extion/././ w] {2,3} $";プライベート文字列MailServer;プライベート文字列送信者;プライベート文字列[]受信機; public sendmail(){} public void setmailbasicinfo(string mailserver、string sender、string receiver){this.mailserver = mailserver; this.sender = sender; this.receiver = receiver.split( "、"); } public void setMailBasicInfo(String MailServer、String Sender、String [] users){this.mailserver = mailServer; this.sender = sender; this.receiver = users; } public void setMailBasicInfo(String MailServer、String Sender、List <String> users){this.mailserver = mailServer; this.sender = sender; this.receiver = new String [users.size()]; users.toarray(this.receiver); } public boolean send(string subject、string content、list <string> filenames){subject = subject == null? "":subject; content = content == null? "":content; Properties Props = new Properties(); props.put( "mail.smtp.host"、mailserver);セッションセッション= session.getInstance(props、null); try {internetAddress [] receiver = getReceiverList(); if(receiver.length == 0){system.out.println( "受信者はnull"); falseを返します。 } mimemessage msg = new Mimemessage(session); msg.setfrom(new InternetAddress(送信者)); msg.setRecipients(message.recipientType.to、受信機); msg.setsubject(subject); msg.setsentdate(new date()); MultiPart Container = new Mimemultipart(); mimeBodyPart TextBodyPart = new MimeBodyPart(); textBodyPart.setContent(content.toString()、 "text/html; charset = gbk"); container.addbodypart(textbodypart); doattachfile(コンテナ、ファイル名); msg.setContent(コンテナ); System.out.println( "Mail Send Mailを開始"); Transport.send(msg); System.out.println( "メールの成功を送信"); } catch(messagingexception e){system.out.println( "mail fail"を送信 "); System.out.println(e); falseを返します。 } catch(例外e){falseを返します。 } trueを返します。 } public boolean send(string subject、string content){return send(subject、content、null); } public boolean send(string subject){return send(subject、null); } private void doattachfile(Multipart Container、list <string> filenames)throws messagingexception {if(filenames == null || filenames.size()== 0)return; for(string filename:filenames){file f = new file(filename); if(!f.isfile())継続; system.out.println( "添付ファイルは:"+filename); mimebodypart filebodyPart = new MimeBodyPart(); filedataSource fds = new filedatasource(f); // filebodyPart.setFileName(fds.getName()); //设置附件的名称container.addbodyPart(filebodyPart); }} private InternetAddress [] getReceiverList()throws addressexception {arrayList <internedAddress> tolist = new ArrayList <InternetAddress>(); for(int i = 0; i <receiver.length; ++ i){if(receiver [i] .matches(mail_address_regex)){tolist.add(new InternetAddress(Receiver [i])); }} return(internetAddress [])tolist.toarray(new InternetAddress [tolist.size()]); }}使用举例
string host = "168.xx.xx.xx"; //邮件服务器的地址string subject = "发送邮件的主题"; string sender = "[email protected]"; list <string> receivers = new arraylist <string>(); receivers.add( "[email protected]"); receivers.add( "[email protected]"); string content = ");受信者); sendmail.send(件名、コンテンツ、null); //没有附件
html内容、如
string content = "<html>详细信息:<a href = 'xxxx'> 请点击查看! </a> </html>";
我们再来看一个封装好的类
パッケージcom.message.base.email; com.message.base.spring.applicationhelper; Import com.message.base.utils.stringutils; Import com.message.base.utils.validateutils; Import org.slf4j.logger; import org.slf4j.loggerfactory; javax.mail。*;インポートjavax.mail.internet.internetaddress; Import javax.mail.internet.mimemessage; Import java.util.collections; import java.util.date; Import java.util.list; import java.util.util.properties; /***发送邮件服务器。 * * @author sunhao([email protected]) * @version v1.0、13-3-25上午6:19 */public class emailserver {private static final logger logger = loggerfactory.getlogger(emailserver.class); // spring / **是否开启debug / **是否启用身份验证**/ private boolean isauth = true; / **验证类型**/ private string authtype = "auth"; / ** *私有化默认构造器、使外部不可实例化 */ private emailServer(){}/ ** *单例、保证上下文中只有一个emailserver * * @return emailserver */ public static emailserver getInstance(){return applicationhelper.getInstance()。 } / ** *发送普通邮件(单个接收人) * * @param username collections.singletonList(受信機)); } / ** *发送普通邮件(多个接收人) * * @param username if(this.isauth()){//如果需要身份认证、则创建一个密码验证器auth = new Authentication(username、password); }プロパティprops = new Properties(); props.setProperty( "mail.smtp.auth"、this.isauth()? "true": "false"); props.setProperty( "mail.transport.protocol"、 "auth"); emailConfig config = this.getEmailConfig(username); props.setProperty( "mail.smtp.host"、config.getSmtp()); props.setProperty( "mail.smtp.port"、config.getport() + ""); //根据邮件会话属性和密码验证器构造一个发送邮件的セッションセッション= session.getDefaultInstance(Props、auth); session.setDebug(this.isdebug);メッセージメッセージ= this.maketextmail(セッション、タイトル、コンテンツ、ユーザー名、受信者、false); try {Transport.send(message); trueを返します。 } catch(messagingexception e){logger.error(e.getmessage()、e); falseを返します。 }} / ** * html邮件(单个接收人) * * @param username Content、Collections.singletonList(受信機)); } / ** * html邮件(多个接收人) * * @param username if(this.isauth()){//如果需要身份认证、则创建一个密码验证器auth = new Authentication(username、password); }プロパティprops = new Properties(); props.setProperty( "mail.smtp.auth"、this.isauth()? "true": "false"); props.setProperty( "mail.transport.protocol"、 "auth"); emailConfig config = this.getEmailConfig(username); props.setProperty( "mail.smtp.host"、config.getSmtp()); props.setProperty( "mail.smtp.port"、config.getport() + ""); //根据邮件会话属性和密码验证器构造一个发送邮件的セッションセッション= session.getDefaultInstance(Props、auth); session.setDebug(this.isdebug);メッセージメッセージ= this.maketextmail(セッション、タイトル、コンテンツ、ユーザー名、受信者、true); try {Transport.send(message); trueを返します。 } catch(messagingexception e){logger.error(e.getmessage()、e); falseを返します。 }} / ** * * * * @param email邮箱地址 * @return * / private emailconfig getemailconfig(string email){string mailservicedomainname = this.getmailservicedomainname(email); for(emailconfig config:this.config){if(config.getName()。equals(mailservicedomainname)){return config; }} nullを返します。 } / ** *创建邮件メッセージ * * @param Session Mimemessage(セッション); try { / **标题** / logger.info( "このメールのタイトルは{}"、title); message.setsubject(title); / **内容**/ logger.info( "このメールのコンテンツは{}"、content); if(ishtmlmail){// } else {//普通邮件message.settext(content); } / **发件者地址** / logger.info( "このメールの送信者は{}"、from);アドレスfromAddress = new InternetAddress(from); message.setfrom(fromddress); / **接收者地址**/ address [] tos = new InternetAddress [Receivers.size()]; for(int i = 0; i <Receivers.size(); i ++){string Receiver = Receivers.get(i); if(validateutils.isemail(receiver)){tos [i] = new InternetAddress(Receiver); }} / **发件时间** / message.setSentDate(new date()); message.setRecipients(message.recipientType.to、tos); } catch(messagingexception e){logger.error(e.getmessage()、e); e.printstacktrace(); }メッセージを返します。 } / ** *获取邮箱域名 * * @param Email邮箱 * @return * / private string getMailServiceMainName(string email){if(stringutils.isempty(email)){return ""; } else {int firstIndex = stringutils.indexof(email、 "@"); int secondindex = stringutils.lastindexof(email、 "。"); return stringutils.substring(email、firstindex + 1、secondindex); }} public list <emailconfig> getConfig(){return Config; } public void setConfig(list <emailconfig> config){this.config = config; } public boolean isdebug(){return isdebug; } public void setDebug(boolean debug){isdebug = debug; } public boolean isauth(){return isauth; } public void setauth(boolean auth){isauth = auth; } public string getAuthType(){return authtype; } public void setAuthType(string authType){this.authType = authType; }}
调用方式如下
public boolean sendmail()throws exception {list <string> receivers = new ArrayList <String>(); Receivers.Add( "[email protected]"); Receivers.Add( "[email protected]"); emailserver.getInstance()。sendhtmlmail( "[email protected]"、 "这里是密码"、 "测试发送html邮件"、 "<span style = 'color:red; font-size:20pt'>ターゲット= '_ blank'>链接到百度</a> "、受信者); return emailserver.getInstance()。sendtextmail( "[email protected]"、 "这里是密码"、 "测试发送文本邮件"、 "测试发送文本邮件测试发送文本邮件测试发送文本邮件"、受信者);}PS:正在考虑扩展、如果把这几个类封在jar包中、如何进行邮件服务器配置的扩展。
如有不好之处、欢迎拍砖。