--sunfruit
寫了一個收發郵件的應用程序[在列表里面可以看到]但是畢竟有些復雜,關鍵部分其實也就是幾行代碼,為了大家使用方便,我把發送郵件的代碼單獨拿了出來,并且分為發送附件/不發送附件兩個方法,便于大家查看,只是什么設計啦,編程思想啦,等等就談不到了,呵呵,大家將就吧
JDK版本
1.4.x
其 他
JAVAMAIL相關包
功能簡介:
簡單的郵件發送功能,可以發送附件
源代碼如下
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
import java.util.*;
import java.text.*;
import java.io.*;
public class SendMail
{
//傳入的參數有密碼、姓名、誰發、發給誰、主題、正文內容、smtp地址、附件文件路徑、附件的新文件名、發送類型(text/html)
//發送郵件主函數
public String sendmail(int myport,String password,String username,String myfrom,String myto,String mysubject,String mytext,String mysmtp,String[] filepath,String[] newfilename,String htmlandtext)
{
try{
int indexstr=0;
if (filepath[0]!=null && !filepath[0].equals(""))
indexstr=1;
//替換字符串
// jbemail myjbemail=new jbemail();
// filepath=myjbemail.myreplace(filepath,"\\","\\\\");
// System.out.println("附件地址"+filepath+"服務器地址"+mysmtp+mysmtp.length());
//Properties props = new Properties();
Properties props = System.getProperties();
Session sendMailSession;
Store store; //收郵件時使用
Transport transport;//發郵件時使用
props.put("mail.smtp.host",mysmtp);
props.put("mail.smtp.auth","true");
SmtpAuthenticator sa=new SmtpAuthenticator(username,password);
sendMailSession = Session.getInstance(props,sa);
//sendMailSession = Session.getInstance(props,null);
sendMailSession.setDebug(true);
MimeMessage newMessage = new MimeMessage(sendMailSession);
newMessage.setFrom(new InternetAddress(myfrom));
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(myto));
//設定郵件格式
newMessage.setSentDate(new Date());
System.out.println(htmlandtext+"郵件正文格式");
Multipart multipart = new MimeMultipart();
if (htmlandtext.equals("text"))
{
//獲得文本格式的郵件
newMessage.setSubject(mysubject);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(mytext);
multipart.addBodyPart(messageBodyPart);
}
else if(htmlandtext.equals("html"))
{
//設置郵件內容,將郵件body部分轉化為HTML格式
newMessage.setSubject(mysubject,"gb2312");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(mytext,"text/html;charset=gb2312"));
multipart.addBodyPart(messageBodyPart);
}
if (indexstr>0)
{
for(int i=0;i {
if (newfilename[i]!=null)
{
//創建BodyPart對象以便獲得附件
BodyPart messageBodyPart = new MimeBodyPart();
System.out.println("附件地址"+filepath[i]);
DataSource source = new FileDataSource(filepath[i]);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(newfilename[i]);
multipart.addBodyPart(messageBodyPart);
}
}
}
//將正文和附件添加到郵件中
newMessage.setContent(multipart);
newMessage.saveChanges();
//transport = sendMailSession.getStore("pop3");
transport = sendMailSession.getTransport("smtp");
transport.connect(mysmtp,myport,username,password);
//transport.connect();
transport.send(newMessage,newMessage.getAllRecipients());
System.out.println("成功發送到"+myto);
return "ok";
}
catch(MessagingException m)
{
System.out.println(m.toString()+"失敗");
return myto;
}
}
//不含發送附件的函數
//傳入的參數有port地址、密碼、姓名、誰發、發給誰、主題、正文內容、smtp地址、發送類型(text/html)
public String sendmail(String mailPathlog,int myport,String password,String username,String myfrom,String myto,String mysubject,String mytext,String mysmtp,String htmlandtext)
{
try{
//解碼
mysubject=java.net.URLDecoder.decode(mysubject);
//Properties props = new Properties();
Properties props = System.getProperties();
Session sendMailSession;
Store store; //收郵件時使用
Transport transport;//發郵件時使用
props.put("mail.smtp.host",mysmtp);
props.put("mail.smtp.auth","true");
SmtpAuthenticator sa=new SmtpAuthenticator(username,password);
//身份驗證
sendMailSession = Session.getInstance(props,sa);
//sendMailSession = Session.getInstance(props,null);
sendMailSession.setDebug(true);
MimeMessage newMessage = new MimeMessage(sendMailSession);
try
{
newMessage.setFrom(new InternetAddress(myfrom,"法律之星"));
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(myto));
}
catch(java.io.UnsupportedEncodingException ex)
{
System.out.println(ex.toString());
}
//設定郵件格式
newMessage.setSentDate(new Date());
System.out.println(htmlandtext+"郵件正文格式");
Multipart multipart = new MimeMultipart();
if (htmlandtext.equals("text"))
{
//獲得文本格式的郵件
newMessage.setSubject(mysubject);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(mytext);
multipart.addBodyPart(messageBodyPart);
}
else if(htmlandtext.equals("html"))
{
//設置郵件內容,將郵件body部分轉化為HTML格式
newMessage.setSubject(mysubject,"gb2312");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(mytext,"text/html;charset=gb2312"));
multipart.addBodyPart(messageBodyPart);
}
//將正文添加到郵件中
newMessage.setContent(multipart);
newMessage.saveChanges();
//transport = sendMailSession.getStore("pop3");
transport = sendMailSession.getTransport("smtp");
transport.connect(mysmtp,myport,username,password);
//transport.connect();
transport.send(newMessage,newMessage.getAllRecipients());
System.out.println("成功發送到"+myto+mytext);
return "ok";
}
catch(MessagingException m)
{
System.out.println(m.toString()+"失敗");
//生成當前日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date dateTime= new Date();
String sDateTime=dateFormat.format(dateTime);
//生成日志文件
try
{
File filelog=new File(mailPathlog+"\\"+"mainlog.txt");
BufferedWriter out2=new BufferedWriter(new FileWriter(filelog.getPath(),true));
String newline = System.getProperty("line.separator");
out2.write(sDateTime+"/"+mysmtp+"/"+myfrom+"/"+myto+"/"+m.toString()+"/"+newline);
out2.close();
}
catch (IOException ex)
{
System.out.println(ex.toString());
}
return myto;
}
}
class SmtpAuthenticator extends Authenticator
{
//SMTP身份驗證
public SmtpAuthenticator(String username,String password)
{
this.username=username;
this.password=password;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(this.username,this.password);
}
String username=null;
String password=null;
}
}