用JAVAMAIL发送邮件的一个简单例子
生活随笔
收集整理的這篇文章主要介紹了
用JAVAMAIL发送邮件的一个简单例子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫了一個收發(fā)郵件的應(yīng)用程序[在列表里面可以看到]但是畢竟有些復(fù)雜,關(guān)鍵部分其實也就是幾行代碼,為了大家使用方便,我把發(fā)送郵件的代碼單獨拿了出來,并且分為發(fā)送附件/不發(fā)送附件兩個方法,便于大家查看,只是什么設(shè)計啦,編程思想啦,等等就談不到了,呵呵,大家將就吧
??? JDK版本
??????? 1.4.x
??? 其?? 他
??????? JAVAMAIL相關(guān)包
??? 功能簡介:
??????? 簡單的郵件發(fā)送功能,可以發(fā)送附件
??? 源代碼如下
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 {//傳入的參數(shù)有密碼、姓名、誰發(fā)、發(fā)給誰、主題、正文內(nèi)容、smtp地址、附件文件路徑、附件的新文件名、發(fā)送類型(text/html)//發(fā)送郵件主函數(shù)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+"服務(wù)器地址"+mysmtp+mysmtp.length());//Properties props = new Properties();Properties props = System.getProperties();Session sendMailSession;Store store; //收郵件時使用Transport transport;//發(fā)郵件時使用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));//設(shè)定郵件格式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")){//設(shè)置郵件內(nèi)容,將郵件body部分轉(zhuǎn)化為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){//創(chuàng)建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("成功發(fā)送到"+myto);return "ok";}catch(MessagingException m){System.out.println(m.toString()+"失敗");return myto;}}//不含發(fā)送附件的函數(shù)//傳入的參數(shù)有port地址、密碼、姓名、誰發(fā)、發(fā)給誰、主題、正文內(nèi)容、smtp地址、發(fā)送類型(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;//發(fā)郵件時使用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());}//設(shè)定郵件格式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")){//設(shè)置郵件內(nèi)容,將郵件body部分轉(zhuǎn)化為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("成功發(fā)送到"+myto+mytext);return "ok";}catch(MessagingException m){System.out.println(m.toString()+"失敗");//生成當(dāng)前日期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;} }
?
總結(jié)
以上是生活随笔為你收集整理的用JAVAMAIL发送邮件的一个简单例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何自动修复XP/VISTA/WIN7系
- 下一篇: 各大型邮箱smtp服务器及端口收集: