用JAVAMAIL发送邮件的一个简单例子
生活随笔
收集整理的這篇文章主要介紹了
用JAVAMAIL发送邮件的一个简单例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫了一個收發郵件的應用程序[在列表里面可以看到]但是畢竟有些復雜,關鍵部分其實也就是幾行代碼,為了大家使用方便,我把發送郵件的代碼單獨拿了出來,并且分為發送附件/不發送附件兩個方法,便于大家查看,只是什么設計啦,編程思想啦,等等就談不到了,呵呵,大家將就吧
??? 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;} }
?
總結
以上是生活随笔為你收集整理的用JAVAMAIL发送邮件的一个简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何自动修复XP/VISTA/WIN7系
- 下一篇: clickhouse原理解析与应用实践_