天天看點

java實作發送郵件的程式

 記錄一下網上找到的發送郵件的程式

1.先寫一個轉字元格式的類

 public class ExtendString {

public ExtendString() {

}

/**

去掉字元串兩端的空白字元,并将字元串轉化為中國的标準字元gb2312的字元串.

*/

public String CS(String str) { //去掉字元串2端的空白字元

try {

if (str == null)

return "";

str = str.trim();

str = new String(str.getBytes("8859_1"), "GBK");

}

catch (Exception e) {

System.out.println(e);

return str;

2。完成發送郵件的類

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.Properties;

import java.util.StringTokenizer;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

public class SendMail {

private String errMsg = "";

private ExtendString ExStr = new ExtendString();

private String user="";

private String sender = "";//發件人位址

private String smtpHost = "";//郵件發送伺服器(smtp)

private String subject = "";//mail主題

private String password;

public SendMail()

{

this.setPropertiesAttri();

private void setPropertiesAttri(){

try

{

InputStream is = getClass().getResourceAsStream("MailServer.properties");

Properties prop = new Properties();

prop.load(is);

this.setSmtpHost(prop.get("SmtpHost").toString());

this.setUser(prop.get("User").toString());

this.setPassword(prop.get("Password").toString());

this.setSender(prop.get("Sender").toString());

this.setSubject(ExStr.CS(prop.get("Subject").toString()));

catch(Exception ex)

System.err.println("ex1 in sendmail.java:"+ex.toString());

/** 設定發件人位址 */

public void setSender(String sender)

this.sender = sender;

public String getSender()

return sender;

/** 設定郵件發送伺服器(smtp) */

public void setSmtpHost(String smtpHost) {this.smtpHost = smtpHost;}

public String getSmtpHost(){

return smtpHost;

public void setUser(String user){

this.user = user;

public String getUser()

return user;

public void setPassword(String password)

this.password = password;

public String getPassword()

return password;

/** 設定mail主題 */

public void setSubject(String subject)

this.subject = subject;

public String getSubject()

return subject;

* 使用smtp發送郵件 主程式

* @throws MessagingException mail發送失敗

public void smtp(String receiver,String content) throws MessagingException

if (smtpHost == null) throw new MessagingException("smtpHost not found");

if (user == null) throw new MessagingException("user not found");

if (password == null) throw new MessagingException("password not found");

Properties properties = new Properties();

properties.put("mail.smtp.host", smtpHost);//設定smtp主機

properties.put("mail.smtp.auth", "true");//使用smtp身份驗證

Session session = Session.getDefaultInstance(properties,

new Authenticator(){

public PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(user, password);

});

//獲得郵件會話對象

MimeMessage mimeMsg = new MimeMessage(session);//建立MIME郵件對象

if (sender != null)//設定發件人位址

mimeMsg.setFrom(new InternetAddress(sender));

if (receiver != null)//設定收件人位址

mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));

if (subject != null)//設定郵件主題

mimeMsg.setSubject(subject, "GBK");

MimeBodyPart part = new MimeBodyPart();//mail内容部分

part.setText(content == null ? "" : content, "GBK");

//設定郵件格式為html cqc,"text/html;charset=GBK");

Multipart multipart = new MimeMultipart();

multipart.addBodyPart(part);//在 Multipart 中增加mail内容部分

mimeMsg.setContent(multipart);//增加 Multipart 到資訊體

mimeMsg.setSentDate(new Date());//設定發送日期

Transport.send(mimeMsg);//發送郵件

/** 解析位址集合字元串 */

private InternetAddress[] parse(String addressSet) throws AddressException

ArrayList list = new ArrayList();

StringTokenizer tokens = new StringTokenizer(addressSet, ";");

while (tokens.hasMoreTokens())

list.add(new InternetAddress(tokens.nextToken().trim()));

InternetAddress[] addressArray = new InternetAddress[list.size()];

list.toArray(addressArray);

return addressArray;

* 供外部調用的接口

public boolean sendMails(String mail,String content)

int mailLen = 0 ;

int contentLen= 0;

if (mail == null||content==null)

return false;

try

this.smtp(mail,content);

catch(Exception ex)

System.err.println("ex2 in sendmail.java:"+ex.toString());

return true;

public static void main (String args[])

SendMail mail = new SendMail();

String email = "[email protected];[email protected]";//多個位址之間用;隔開

String content = "賬号:123 密碼:123 感謝您注冊!www.xxxx.com.cn此緻xxxx即日";

mail.sendMails(email,content);

catch (Exception ex)

System.err.println("ex33:"+ex.toString());

}

3.寫一個配置郵箱的配置檔案,MailServer.properties

SmtpHost=smtp.163.com

[email protected]

Password=841104

[email protected]

Subject=Hello

運作以來,ok

繼續閱讀