刚上班让做这个,有点蒙,求大神帮助。前端和后台代码。谢谢!
(邮箱编辑页面实现:可发送多人,正文可以嵌入图片,可以上传附件)
Java实现含图片的复杂邮件
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答
- syt_Jimmy 2017-09-14 02:56关注
private static String HOST = "";
private static String USER = "";
private static String PWD = "";
private static String FROM = "";public static void main(String[] agrs) { System.out.println("发邮件开始"); //需要注意这个图片的地址 如果是本地地址 邮件看不到图片 必须是服务器地址 sendHtmlEmail(to,"该付款了","<!DOCTYPE html><html><head><meta charset=''utf-8'></head><body><img src='http://192.168.1.108:9586/payImg/20170910.png'></body></html>"); System.out.println("发邮件结束"); } /** * 发送纯文本邮件 * * @param to * 收件人地址 * @param subject * 邮件标题 * @param content * 邮件内容 * @author LY */ public static void sendTextEmail(String to, String subject, String content) { Properties props = new Properties(); Authenticator auth = new EmailAuthenticator(); // 邮件服务器认证 props.put("mail.smtp.host", HOST); // 验证授权 props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, auth); // 在console处显示过程信息 session.setDebug(true); // 用session为参数定义消息对象 MimeMessage message = new MimeMessage(session); try { // 加载发件人地址 message.setFrom(new InternetAddress(FROM)); // 加载收件人地址 // message.addRecipient(Message.RecipientType.TO, new // InternetAddress(to)); // 加载收件人地址,发送多封邮件 int mailtocount = to.split(";").length; if (mailtocount > 1) { String[] tos = to.split(";"); for (int i = 0; i < mailtocount; i++) { message.addRecipient(Message.RecipientType.TO, new InternetAddress(tos[i])); } } else { Address toAddress = new InternetAddress(to); // 收件人 message.setRecipient(Message.RecipientType.TO, toAddress); } // 加载标题 message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText(content); multipart.addBodyPart(contentPart); message.setContent(multipart); // 保存邮件 message.saveChanges(); // 发送邮件 Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱 transport.connect(HOST, USER, PWD); // 把邮件发送出去 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } public static void sendHtmlEmail(String to, String subject, String content) { Properties props = new Properties(); Authenticator auth = new EmailAuthenticator(); // 邮件服务器认证 props.put("mail.smtp.host", HOST); // 验证授权 props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, auth); // 在console处显示过程信息 session.setDebug(true); // 用session为参数定义消息对象 MimeMessage message = new MimeMessage(session); try { // 加载发件人地址 message.setFrom(new InternetAddress(FROM)); // 加载收件人地址 // message.addRecipient(Message.RecipientType.TO, new // InternetAddress(to)); // 加载收件人地址,发送多封邮件 int mailtocount = to.split(";").length; if (mailtocount > 1) { String[] tos = to.split(";"); for (int i = 0; i < mailtocount; i++) { message.addRecipient(Message.RecipientType.TO, new InternetAddress(tos[i])); } } else { Address toAddress = new InternetAddress(to); // 收件人 message.setRecipient(Message.RecipientType.TO, toAddress); } // 加载标题 message.setSubject(subject); message.setText("哎,损失了"); /* * //设置消息正文,文本 message.setText("Welcome To JavaMail"); //设置HTML内容 * message.setContent("<a href='http://www.163.com'>百度</a>", * "text/html;charset=utf-8"); */ // MimeMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart body = new MimeBodyPart(); // 设置html内容 body.setContent(content, "text/html;charset=utf-8"); // 将MimeMultipart设置为邮件内容 mainPart.addBodyPart(body); message.setContent(mainPart); // /////////////////////sesion获得Transprot Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱 transport.connect(HOST, USER, PWD); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 发送带内嵌图片的HTML邮件 */ public static void sendHtmlWithInnerImageEmail(String to, String subject, String text, String imgPath) { try { // 创建Session实例对象 Properties props = new Properties(); Authenticator auth = new EmailAuthenticator(); // 邮件服务器认证 props.put("mail.smtp.host", HOST); // 验证授权 props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, auth); // 创建邮件内容 MimeMessage message = new MimeMessage(session); // 邮件主题,并指定编码格式 message.setSubject(subject, "utf-8"); // 发件人 message.setFrom(new InternetAddress(FROM)); // 收件人 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); // 抄送 // message.setRecipient(RecipientType.CC, new // InternetAddress("java_test@sohu.com")); // 密送 (不会在邮件收件人名单中显示出来) // message.setRecipient(RecipientType.BCC, new // InternetAddress("417067629@qq.com")); // 发送时间 message.setSentDate(new Date()); // 创建一个MIME子类型为“related”的MimeMultipart对象 MimeMultipart mp = new MimeMultipart("related"); // 创建一个表示正文的MimeBodyPart对象,并将它加入到前面创建的MimeMultipart对象中 MimeBodyPart htmlPart = new MimeBodyPart(); mp.addBodyPart(htmlPart); // 创建一个表示图片资源的MimeBodyPart对象,将将它加入到前面创建的MimeMultipart对象中 MimeBodyPart imagePart = new MimeBodyPart(); mp.addBodyPart(imagePart); // 将MimeMultipart对象设置为整个邮件的内容 message.setContent(mp); // 设置内嵌图片邮件体 DataSource ds = new FileDataSource(new File(imgPath)); DataHandler dh = new DataHandler(ds); imagePart.setDataHandler(dh); imagePart.setContentID("aaa.png"); // 设置内容编号,用于其它邮件体引用 // 创建一个MIME子类型为"alternative"的MimeMultipart对象,并作为前面创建的htmlPart对象的邮件内容 MimeMultipart htmlMultipart = new MimeMultipart("alternative"); // 创建一个表示html正文的MimeBodyPart对象 MimeBodyPart htmlBodypart = new MimeBodyPart(); // 其中cid=androidlogo.gif是引用邮件内部的图片,即imagePart.setContentID("androidlogo.gif");方法所保存的图片 htmlBodypart.setContent(text, "text/html;charset=utf-8"); htmlMultipart.addBodyPart(htmlBodypart); htmlPart.setContent(htmlMultipart); // 保存并生成最终的邮件内容 message.saveChanges(); // 发送邮件 Transport.send(message); } catch (Exception e) { e.printStackTrace(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 虚心请教几个问题,小生先有礼了
- ¥30 截图中的mathematics程序转换成matlab