已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
邮件发送简单示例:package fss.base;import java.util.*;import javax.mail.*;import ernet.*;import java.util.Date;import javax.activation.*;import java.io.*;public class Mail/把本程序所用变量进行定义。 具体在main中对它们赋植。private MimeMessage mimeMsg; / MIME邮件对象private Session session; / 邮件会话对象private Properties props; / 系统属性private boolean needAuth = false; / smtp是否需要认证private String username = ; / smtp认证用户名和密码private String password = ;private Multipart mp; / Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成/MimeMessage对象public Mail(String smtp)setSmtpHost(smtp);createMimeMessage();public void setSmtpHost(String hostName)System.out.println(设置系统属性:mail.smtp.host = + hostName);if (props = null)props = System.getProperties(); / 获得系统属性对象props.put(mail.smtp.host, hostName); / 设置SMTP主机public boolean createMimeMessage()try System.out.println(准备获取邮件会话对象!);session = Session.getDefaultInstance(props, null); / 获得邮件会话对象catch (Exception e)System.err.println(获取邮件会话对象时发生错误! + e);return false;System.out.println(准备创建MIME邮件对象!);try mimeMsg = new MimeMessage(session); / 创建MIME邮件对象mp = new MimeMultipart(); / mp 一个multipart对象/ Multipart is a container that holds multiple body parts.return true;catch (Exception e)System.err.println(创建MIME邮件对象失败! + e);return false;public void setNeedAuth(boolean need) System.out.println(设置smtp身份认证:mail.smtp.auth = + need);if (props = null)props = System.getProperties();if (need) props.put(mail.smtp.auth, true); else props.put(mail.smtp.auth, false);public void setNamePass(String name, String pass)System.out.println(程序得到用户名与密码);username = name;password = pass; /*设置邮件主题*/public boolean setSubject(String mailSubject) System.out.println(设置邮件主题!);try mimeMsg.setSubject(mailSubject);return true;catch (Exception e) System.err.println(设置邮件主题发生错误!);return false;/*设置邮件体*/public boolean setBody(String mailBody)trySystem.out.println(设置邮件体格式);BodyPart bp = new MimeBodyPart();bp.setContent(+ mailBody, text/html;charset=GB2312);mp.addBodyPart(bp);return true;catch (Exception e)System.err.println(设置邮件正文时发生错误! + e);return false;/*设置邮件附件*/public boolean addFileAffix(String filename) System.out.println(增加邮件附件: + filename);try BodyPart bp = new MimeBodyPart();FileDataSource fileds = new FileDataSource(filename);bp.setDataHandler(new DataHandler(fileds);bp.setFileName(fileds.getName();mp.addBodyPart(bp);return true;catch (Exception e) System.err.println(增加邮件附件: + filename + 发生错误! + e);return false;/*设置发信人*/public boolean setFrom(String from) System.out.println(设置发信人!);try mimeMsg.setFrom(new InternetAddress(from); / 设置发信人return true;catch (Exception e)return false;/*设置收信人*/public boolean setTo(String to)System.out.println(设置收信人);if (to = null)return false;trymimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to);return true;catch (Exception e)return false;public boolean setCopyTo(String copyto)System.out.println(发送附件到);if (copyto = null)return false;try mimeMsg.setRecipients(Message.RecipientType.CC,(Address) InternetAddress.parse(copyto);return true;catch (Exception e)return false;public boolean sendout()trymimeMsg.setContent(mp); /设置信的内容mimeMsg.saveChanges(); /保存System.out.println(正在发送邮件.);Session mailSession = Session.getInstance(props, null);Transport transport = mailSession.getTransport(smtp); /协议transport.connect(String) props.get(mail.smtp.host), username,password); /连接到服务器,写如username,passwordtransport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO); /设置收件人列表,发送/ transport.send(mimeMsg);System.out.println(发送邮件成功!);transport.close();return true;catch (Exception e)System.err.println(邮件发送失败! + e);return false;public static void main(String args)String mailbody = 用户邮件注册测试 欢迎光临 啦ABC;Mail themail = new Mail();themail.setNeedAuth(true);if (themail.setSubject(邮件测试) = false)return;/邮件内容 支持html 如 欢迎光临 啦ABCif (themail.setBody(mailbody) = false)return;/收件人邮箱if (themail.setTo() = false)return;/发件人邮箱if (themail.setFrom() = false)return;/设置附件/if (themail.addFileAffix(#) = false)/return; / 附件在本地机子上的绝对路径themail.setNamePass(用户名, 密码); / 用户名与密码if (themail.sendout() = false)return;1. importjava.io.*; 2. importjava.text.*; 3. importjava.util.*; 4. importjavax.mail.*; 5. ernet.*; 6. 7. /* 8. *有一封邮件就需要建立一个ReciveMail对象 9. */ 10. publicclassReciveOneMail 11. privateMimeMessagemimeMessage=null; 12. privateStringsaveAttachPath=;/附件下载后的存放目录 13. privateStringBufferbodytext=newStringBuffer();/存放邮件内容 14. privateStringdateformat=yy-MM-ddHH:mm;/默认的日前显示格式 15. 16. publicReciveOneMail(MimeMessagemimeMessage) 17. this.mimeMessage=mimeMessage; 18. 19. 20. publicvoidsetMimeMessage(MimeMessagemimeMessage) 21. this.mimeMessage=mimeMessage; 22. 23. 24. /* 25. *获得发件人的地址和姓名 26. */ 27. publicStringgetFrom()throwsException 28. InternetAddressaddress=(InternetAddress)mimeMessage.getFrom(); 29. Stringfrom=address0.getAddress(); 30. if(from=null) 31. from=; 32. Stringpersonal=address0.getPersonal(); 33. if(personal=null) 34. personal=; 35. Stringfromaddr=personal+; 36. returnfromaddr; 37. 38. 39. /* 40. *获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同to-收件人cc-抄送人地址bcc-密送人地址 41. */ 42. publicStringgetMailAddress(Stringtype)throwsException 43. Stringmailaddr=; 44. Stringaddtype=type.toUpperCase(); 45. InternetAddressaddress=null; 46. if(addtype.equals(TO)|addtype.equals(CC)|addtype.equals(BCC) 47. if(addtype.equals(TO) 48. address=(InternetAddress)mimeMessage.getRecipients(Message.RecipientType.TO); 49. elseif(addtype.equals(CC) 50. address=(InternetAddress)mimeMessage.getRecipients(Message.RecipientType.CC); 51. else 52. address=(InternetAddress)mimeMessage.getRecipients(Message.RecipientType.BCC); 53. 54. if(address!=null) 55. for(inti=0;iaddress.length;i+) 56. Stringemail=addressi.getAddress(); 57. if(email=null) 58. email=; 59. else 60. email=MimeUtility.decodeText(email); 61. 62. Stringpersonal=addressi.getPersonal(); 63. if(personal=null) 64. personal=; 65. else 66. personal=MimeUtility.decodeText(personal); 67. 68. Stringcompositeto=personal+; 69. mailaddr+=,+compositeto; 70. 71. mailaddr=mailaddr.substring(1); 72. 73. else 74. thrownewException(Erroremailaddrtype!); 75. 76. returnmailaddr; 77. 78. 79. /* 80. *获得邮件主题 81. */ 82. publicStringgetSubject()throwsMessagingException 83. Stringsubject=; 84. try 85. subject=MimeUtility.decodeText(mimeMessage.getSubject(); 86. if(subject=null) 87. subject=; 88. catch(Exceptionexce) 89. returnsubject; 90. 91. 92. /* 93. *获得邮件发送日期 94. */ 95. publicStringgetSentDate()throwsException 96. Datesentdate=mimeMessage.getSentDate(); 97. SimpleDateFormatformat=newSimpleDateFormat(dateformat); 98. returnformat.format(sentdate); 99. 100. 101. /* 102. *获得邮件正文内容 103. */ 104. publicStringgetBodyText() 105. returnbodytext.toString(); 106. 107. 108. /* 109. *解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 110. */ 111. publicvoidgetMailContent(Partpart)throwsException 112. Stringcontenttype=part.getContentType(); 113. intnameindex=contenttype.indexOf(name); 114. booleanconname=false; 115. if(nameindex!=-1) 116. conname=true; 117. System.out.println(CONTENTTYPE:+contenttype); 118. if(part.isMimeType(text/plain)&!conname) 119. bodytext.append(String)part.getContent(); 120. elseif(part.isMimeType(text/html)&!conname) 121. bodytext.append(String)part.getContent(); 122. elseif(part.isMimeType(multipart/*) 123. Multipartmultipart=(Multipart)part.getContent(); 124. intcounts=multipart.getCount(); 125. for(inti=0;icounts;i+) 126. getMailContent(multipart.getBodyPart(i); 127. 128. elseif(part.isMimeType(message/rfc822) 129. getMailContent(Part)part.getContent(); 130. else 131. 132. 133. /* 134. *判断此邮件是否需要回执,如果需要回执返回true,否则返回false 135. */ 136. publicbooleangetReplySign()throwsMessagingException 137. booleanreplysign=false; 138. Stringneedreply=mimeMessage 139. .getHeader(Disposition-Notification-To); 140. if(needreply!=null) 141. replysign=true; 142. 143. returnreplysign; 144. 145. 146. /* 147. *获得此邮件的Message-ID 148. */ 149. publicStringgetMessageId()throwsMessagingException 150. returnmimeMessage.getMessageID(); 151. 152. 153. /* 154. *【判断此邮件是否已读,如果未读返回返回false,反之返回true】 155. */ 156. publicbooleanisNew()throwsMessagingException 157. booleanisnew=false; 158. Flagsflags=(Message)mimeMessage).getFlags(); 159. Flags.Flagflag=flags.getSystemFlags(); 160. System.out.println(flagsslength:+flag.length); 161. for(inti=0;iflag.length;i+) 162. if(flagi=Flags.Flag.SEEN) 163. isnew=true; 164. System.out.println(seenMessage.); 165. break; 166. 167. 168. returnisnew; 169. 170. 171. /* 172. *判断此邮件是否包含附件 173. */ 174. publicbooleanisContainAttach(Partpart)throwsException 175. booleanattachflag=false; 176. StringcontentType=part.getContentType(); 177. if(part.isMimeType(multipart/*) 178. Multipartmp=(Multipart)part.getContent(); 179. for(inti=0;imp.getCount();i+) 180. BodyPartmpart=mp.getBodyPart(i); 181. Stringdisposition=mpart.getDisposition(); 182. if(disposition!=null) 183. &(disposition.equals(Part.ATTACHMENT)|(disposition 184. .equals(Part.INLINE) 185. attachflag=true; 186. elseif(mpart.isMimeType(multipart/*) 187. attachflag=isContainAttach(Part)mpart); 188. else 189. Stringcontype=mpart.getContentType(); 190. if(contype.toLowerCase().indexOf(application)!=-1) 191. attachflag=true; 192. if(contype.toLowerCase().indexOf(name)!=-1) 193. attachflag=true; 194. 195. 196. elseif(part.isMimeType(message/rfc822) 197. attachflag=isContainAttach(Part)part.getContent(); 198. 199. returnattachflag; 200. 201. 202. /* 203. *【保存附件】 204. */ 205. publicvoidsaveAttachMent(Partpart)throwsException 206. StringfileName=; 207. if(part.isMimeType(multipart/*) 208. Multipartmp=(Multipart)part.getContent(); 209. for(inti=0;imp.getCount();i+) 210. BodyPartmpart=mp.getBodyPart(i); 211. Stringdisposition=mpart.getDisposition(); 212. if(disposition!=null) 213. &(disposition.equals(Part.ATTACHMENT)|(disposition 214. .equals(Part.INLINE) 215. fileName=mpart.getFileName(); 216. if(fileName.toLowerCase().indexOf(gb2312)!=-1) 217. fileName=MimeUtility.decodeText(fileName); 218. 219. saveFile(fileName,mpart.getInputStream(); 220. elseif(mpart.isMimeType(multipart/*) 221. saveAttachMent(mpart); 222. else 223. fileName=mpart.getFileName(); 224. if(fileName!=null) 225. &(fileName.toLowerCase().indexOf(GB2312)!=-1) 226. fileName=MimeUtility.decodeText(fileName); 227. saveFile(fileName,mpart.getInputStream(); 228. 229. 230. 231. elseif(part.isMimeType(message/rfc822) 232. saveAttachMent(Part)part.getContent(); 233. 234. 235. 236. /* 237. *【设置附件存放路径】 238. */ 239. 240. publicvoidsetAttachPath(Stringattachpath) 241. this.saveAttachPath=attachpath; 242. 243. 244. /* 245. *【设置日期显示格式】 246. */ 247. publicvoidsetDateFormat(Stringformat)throwsException 248. this.dateformat=format; 249. 250. 251. /* 252. *【获得附件存放路径】 253. */ 254. publicStringgetAttachPath() 255. returnsaveAttachPath; 256. 257. 258. /* 259. *【真正的保存附件到指定目录里】 260. */ 261. privatevoidsaveFile(StringfileName,InputStreamin)throwsException 262. StringosName=System.getProperty(); 263. Stringstoredir=getAttachPath(); 264. Stringseparator=; 265. if(osName=null) 266. osName=; 267. if(osName.toLowerCase().indexOf(win)!=-1) 268. separator=; 269. if(storedir=null|storedir.equals() 270. storedir=c:tmp; 271. else 272. separator=/; 273. storedir=/tmp; 274. 275. Filestorefile=newFile(storedir+separator+fileName); 276. System.out.println(storefilespath:+storefile.toString(); 277. /for(inti=0;storefile.exists();i+) 278. /storefile=newFile(storedir+separator+fileName+i); 279. / 280. BufferedOutputStreambos=null; 281. BufferedInputStreambis=null; 282. try 283. bos=newBufferedOutputStream(newFileOutputStream(storefile); 284. bis=newBufferedInputStream(in); 285. intc; 286. while(c=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025设备采购合同补充协议范本
- 2025临时建筑买卖合同模板
- 娃娃机场地租赁合同范本
- 2025建筑工程混凝土采购合同
- 2025年上海市汽车租赁的合同范本
- 2025购销合同范本模板示例
- 2025智能家居设备采购合同
- 2025汽车买卖按揭合同范本
- 重庆海联职业技术学院《幼儿园教育活动设计与实施一》2024-2025学年第一学期期末试卷
- DB14-T 2548-2022 制药企业质量控制 生物检定实验室管理规范
- 河南省永城市实验中学2023-2024学年七年级上学期期中语文试题(解析版)
- 中国融通集团招聘笔试题
- 《土木工程新材料》PPT课件-2024鲜版
- 机械制图-第二章投影基础
- 血液科护士与患者沟通技巧
- 窒息中毒事故专项应急预案
- 国家能源集团笔试企业文化知识
- Axure基础培训课件
- HAF101核动力厂厂址评价安全规定
- 口腔器械消毒灭菌技术操作规范
- 纺织品常规整理课件 第十章 防缩整理
评论
0/150
提交评论