发邮件的JAVA程序介绍
以下是一个邮件发HTML的例子,供大家写发邮件参考.
功能是发送UL地址的HTML到邮件.其中的图片会随同邮件一同发给和户. package com.fswan.memo; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern;import javax.activation.DataHandler;
import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; /** * @author swan Fong(方志文) * */ public class TestMail { public static final String ul = "http://www.qxzw.com/htmpage/0/14/123.htm" ; public static void main(String[] args) { try { URL url = new URL(ul); //InputStream ins = url.openStream(); sendMail(url,"newsbot@yeah.net","smtp.yeah.net"); } catch (MalformedURLException e) { e.printStackTrace(); } } public static void sendMail(URL url,String mail,String smtpServer) { System.out.println("send"); MimeMultipart mp = new MimeMultipart(); String idStr = new SimpleDateFormat("hhmmsss").format(new Date()); System.out.println(idStr); try { InputStream ins = url.openStream(); StringBuffer sb = new StringBuffer(); byte[] conts = new byte[10240]; int len = ins.read(conts); while (len > 0) { sb.append(new String(conts,0,len)); //System.out.println(new String(conts)); //conts = new byte[10240]; len = ins.read(conts); } String con = sb.toString(); String con2 = sb.toString(); sb = new StringBuffer(); String regex = "<img .*src=/"?([^/">]*)/"?.*/?//s*>"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(con); ArrayList _mailAttachment = new ArrayList(); int lastPos = 0; while (m.find()) { sb.append(con.substring(lastPos, m.start())); sb.append(m.group().replaceAll(m.group(1), "cid:" + idStr + _mailAttachment.size())); _mailAttachment.add(new URL(url, m.group(1))); lastPos = m.end(); } sb.append(con.substring(lastPos, con.length())); MimeBodyPart mbp2 = new MimeBodyPart(); mbp2.setContent(sb.toString(),"text/html; charset=GB2312"); mp.addBodyPart(mbp2); for (int i = 0; i < _mailAttachment.size(); i++) { MimeBodyPart mbp = new MimeBodyPart(); mbp.setDataHandler(new DataHandler((URL)_mailAttachment.get(i))); mbp.setHeader("Content-ID",idStr+i); mp.addBodyPart(mbp); } Properties prop = new Properties(); prop.put("mail.smtp.host", smtpServer); prop.put("mail.smtp.auth", "true"); Session s = Session.getInstance(prop, new Authenticator(){ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("newsbot@yeah.net", "fswan123"); } }); MimeMessage message = new MimeMessage(s); message.setSubject("mail"); message.setFrom(new InternetAddress(mail)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail)); message.setContent(mp); Transport.send(message); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } System.out.println("Finished"); } }