导航:首页 > 编程语言 > javamail发送邮件图片

javamail发送邮件图片

发布时间:2024-02-04 09:10:50

java邮件功能自动发送邮件,outloook可以显示图片,gmail却不显示

Google Calendar发布后,我还在奇怪怎么没有和Gmail整合起来,成为一个在web上运行的Outlook。结果今天版晚上回家上网回复邮件,发权现在gmail的输入框上已经有了一个"Add event info",再往上看,gmail的图标上也新加了Calendar的链接。

❷ 如何用javamail定时发送邮件 详细03

Java 计时器框架的本身在这里不作过多的介绍,详细信息在IBM developerWorks 中国网站。 我们主要讨论如何利用Java 计时器框架在Solaris 平台来实现邮件的定时发送、JavaMail 发送邮件的实现以及在Solaris 平台上如何以后台方式运行整个邮件定时发送的应用。 下载本文的源代码,参考具体实现。 1.1 形成schele.jar 包 schele.jar 包中的目录结构如下: 我们将数据库的连接、日志、邮件和计划框架的通用类形成一个与具体应用要求无关的schele.jar 包。利用 javac 将编译生成的目标 class 文件存在当前目录的 classes 文件夹下,然后通过 jar -cvf schele.jar ./*命令生成schele.jar 包。 1.1.1 Oracle 数据库连接的建立 位于db 目录下,通过thin 方式建立与Oracle 的数据库连接,具体的实现参见《J2EE 应用中与Oracle 数据库的连接》一文。 1.1.2 日志 以后台方式定时运行的应用应特别注意日志的功能,因为只有通过分析详细的日志信息才能准确掌握应用的执行情况。在logs 目录下为Logs.java 文件,代码如下: package com.j2ee.logs; import java.io.*; import java.util.*; import java.text.SimpleDateFormat; public class Logs { private String logType=""; private String server="/schele/logs/server.log"; private String task="/schele/implements/nohup.out"; private SimpleDateFormat dateFormat = new SimpleDateFormat("【 yyyy 年MM月dd 日 E a HH:mm:ss 】"); /** * @param logType server task */ public Logs(String logType) { this.logType=logType; } public void print(String msg) { try { String path=""; if (logType.equals("server")) path=server; if (logType.equals("task")) path=task; // BufferedWriter out = new BufferedWriter(new FileWriter(path,true)); String str=dateFormat.format(new Date()); if (logType.equals("task")) out.newLine(); out.write(str,0,str.length()); out.write(msg,0,msg.length()); out.newLine(); out.close(); } catch(Exception e) { System.out.println("Logs.print:"+e.getMessage()); } } }; 通过类中的构造器,可以生成两个日志文件:server.log 和nohup.out。server.log 用来记录计时器框架本身定时调度的日志信息,通过它来判断定时调度服务每天是否正常运行;nohup.out 用来记录在具体应用中的调试信息,例如:在应用中通过System.out.println()输出的信息将记录在nohup.out 文件中。 1.1.3 邮件 位于mail 目录下,包括以下一些文件: 1)Debug.java 发送邮件时的调试信息 2)EMailContents.java 邮件的正文,为了使邮件接受者对收到的邮件有一个好的视觉效果,可以先写一个统一的HTML 邮件模板,在模板中填充相应的内容。EmailContents 类完成这一功能。效果如下: 3)Mailer.java 发送邮件的主方法。它调用MailThread 类中的方法创建一个发送邮件的线程。 4)MailThread.java 发送邮件线程类。它调用MailHelper 中的方法来完成发送邮件的工作。 5)MailHelper.java 发送邮件的实现类。在类的createAndSendMail 方法中包括了发送邮件一系列必须的过程,它可以完成一些邮件的正文、附件、抄送、回执等功能。在邮件的实现中用到了两个jar 包:mail.jar 和activation.jar。 1.1.4 计划框架 计划框架的详细内容可以通过本文前面提供的连接去详细了解,本文该部分的代码也出自IBM网站。 1.2 邮件定时发送的实现 这部分主要用到前面schele.jar 中的类来实现与具体应用要求相适应的应用。在implements 目录下有三个类: 1)ScheleTask.java 包含一个main 方法,在本例中"每天计划3 点开始执行计划好的任务"。 2)ScheleThread.java 线程类,在该类的 run 方法中,可以添加不同类型的计划定时执行的任务类来完成不同的定时执行的任务,在本例中调用了Mails 类中的sendMail 方法来定时发送邮件。 3)Mails.java 按照一定的业务逻辑规则实现邮件的发送。 1.3 邮件定时发送应用的运行 包括应用的启动和停止,在Solaris 上我们可以编写两个脚本:start 和stop 来完成该工作。 1.3.1 Start 脚本 Start 脚本内容如下: echo '************************************************************' CLASSPATH=.:/schele/implements/jar/schele.jar: /schele/implements/jar/classes12.zip: /schele/implements/jar/mail.jar:/schele/implements/jar/activation.jar export CLASSPATH echo 'set schele running environment success.' nohup java com.j2ee.implement.ScheleTask & echo 'start schele task success.' echo 'view logs:' echo ' /schele/implements/nohup.out' echo ' /schele/logs/server.log' date >> /schele/logs/server.log echo '计划框架成功启动' >> /schele/logs/server.log echo '************************************************************' 这里有两个关键点:CLASSPATH 的设置和 nohup 运行方式。在 CLASSPATH 中必须提供用到的所有 jar 包,多个jar 包用":"分隔;"&"表示以后台方式运行,"nohup"使应用的运行不依赖于当前的会话,如果不以"nohup"方式的话,即" java com.j2ee.implement.ScheleTask &",当你关闭你当前的会话时,应用将终止运行。可以使用"ps -ef | grep java"来查看应用运行的进程号。 当然也可以通过手工交互的方式完成上述步骤来运行应用。 1.3.2 Stop 脚本 Stop 脚本内容如下: echo '************************************************************' ps -e | grep java >> ps.out kill -9 `cut -c 2-6 ps.out` rm ps.out date >> /schele/logs/server.log echo '计划框架成功停止' >> /schele/logs/server.log echo 'stop schele task success.' echo '************************************************************' 该脚本中主要通过" ps -e | grep java"命令将输出信息重定向到"ps.out"文件中,在从文件中获得进程号,然后将它kill 掉。同样也可以通过手工的方式将它kill。 一般的问题在SUN 中国的技术社区都能找的到的 建议你去看看. 这篇是切过来的 你可以去SUN 中国技术社区下载具体实例 使用JSP开发WebMail 系统 电子邮件(E-mail)是Internet 上使用最广泛的服务之一,传统的Email 应用模式基于C/S 结构,即用户使用客户端的邮件收发工具(如Outlook、Foxmail 等)与提供邮件服务的服务器(如163.net、263.net、 371.net)通信,在使用客户端邮件工具之前,用户要进行一些必要的设置,如指定邮件服务器的主机地址和通信端口等,这些工作对刚开始上网的用户会有一定的困难,如果把E-mail 和Web 结合在一起,即通过Web 编程和适当的系统设置,使用户仅仅以访问Web 的方式就可以得到和使用完整的邮件服务,这样将极大地方便上网用户,这种系统称为WebMail。WebMail 是目前Internet 上最受欢迎的服务之一,也是很多网站必备功能之一。另外WebMail 同样也适用于企业或校园网的应用。 通常在后台服务器的搭建和设置完成后实现WebMail 系统,而前台的开发工作主要是开发工具与后台数据库和邮件服务器的交互问题。在Linux 平台上运行的各种服务器软件稳定性和可靠性一直很好,而且选择跨平台的Java 开发工具使系统更稳定,具有更高的伸缩性。 JSP性能 尽管JSP 提供强大的功能是建立在Servlet 之上,但JSP 的性能和Servlet 相差无几。JSP 首先要编译成Servlet,这只会增加少量的代码,仅需编译一次且可以预编译,这就消除了运行时花费不必要的负担。JSP 与Servlet 性能上的差异仅仅表现在返回的数据是二进制的。这是因为JSP 返回时用的是 PrintWriter,而Servlet 可以应用于速度更快的OutputStream。 JSP 自定义的标签库可以封装大量的、复杂的Java 操作在一个Form里面,这些预先定义好的标签可以很容易的被那些没有Java 知识的人调用。因此,JSP 自定义的标签库可以有效地实现Java 程序员和 Web 设计人员工作的划分。然而,在页面上应用的每一个标签,Web 容器都必须创建一个新的标签句柄对象或从标签缓冲中提取它。因此,过多的应用自定义的标签将会带来不必要的资源浪费。 BodyTags 是一种特殊的定制标签,可以提取在它之间封装的内容或者替换那些内容。BodyTags 之间的内容一般会备份在内存中。由于BodyTags 之间能够嵌套和重复,因此,在程序中应用了多级的 BodyTags 会占用大量宝贵的内存和系统资源。 实现WebMail 的主要功能 该系统提供了获取、阅读、书写、转发、回复、打印、删除及用户管理的功能。考虑到系统的跨平台性,采用Java 及相关技术产品为开发工具,特别是采用JSP 作为服务程序,这样对客户端也没有其它要求,同时系统的性能在高负荷下得到进一步提高。整个WebMail 系统全部采用纯Java 代码,服务器端每响应一个服务请求启动一个线程,而不像CGI 那样启动一个进程。这样能够节省系统资源,提高系统性能。

❸ 如何使用javamail 接收含有图片和附件的唷考

参考代码如下:
import javax.mail.*;
import java.util.*;
import java.io.*;

public class ReceiveMail {

//处理任何一种邮件都需要的方法
private void handle(Message msg) throws Exception {
System.out.println("邮件主题:" + msg.getSubject());
System.out.println("邮件作者:" + msg.getFrom()[0].toString());
System.out.println("发送日期:" + msg.getSentDate());
}

//处理文本邮件
private void handleText(Message msg) throws Exception {
this.handle(msg);
System.out.println("邮件内容:"+msg.getContent());
}

//处理Multipart邮件,包括了保存附件的功能
private static void handleMultipart(Message msg) throws Exception {
String disposition;
BodyPart part;

Multipart mp = (Multipart) msg.getContent();
//Miltipart的数量,用于除了多个part,比如多个附件
int mpCount = mp.getCount();
for (int m = 0; m < mpCount; m++) {
this.handle(msg);
part = mp.getBodyPart(m);
disposition = part.getDisposition();
//判断是否有附件
if (disposition != null && disposition.equals(Part.ATTACHMENT))
{
//这个方法负责保存附件
saveAttach(part);
} else {
//不是附件,就只显示文本内容
System.out.println(part.getContent());
}
}
}

private static void saveAttach(BodyPart part) throws Exception {
//得到未经处理的附件名字
String temp = part.getFileName();
//除去发送邮件时,对中文附件名编码的头和尾,得到正确的附件名
//(请参考发送邮件程序SendMail的附件名编码部分)
String s = temp.substring(8, temp.indexOf("?="));
//文件名经过了base64编码,下面是解码
String fileName = base64Decoder(s);
System.out.println("有附件:" + fileName);

InputStream in = part.getInputStream();
FileOutputStream writer = new FileOutputStream(new File(
"保存附件的本地路径"+ "\\"+fileName));
byte[] content = new byte[255];
int read = 0;
while ((read = in.read(content)) != -1) {
writer.write(content);
}
writer.close();
in.close();
}
//base64解码
private static String base64Decoder(String s) throws Exception {
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] b = decoder.decodeBuffer(s);
return (new String(b));
}

public static void receive(String receiverMailBoxAddress, String username,String password) {
//本人用的是yahoo邮箱,故接受邮件使用yahoo的pop3邮件服务器
String host = "pop.mail.yahoo.com.cn";
try {
//连接到邮件服务器并获得邮件
Properties prop = new Properties();
prop.put("mail.pop3.host", host);
Session session = Session.getDefaultInstance(prop);
Store store = session.getStore("pop3");
store.connect(host, username, password);

Folder inbox = store.getDefaultFolder().getFolder("INBOX");
//设置inbox对象属性为可读写,这样可以控制在读完邮件后直接删除该附件
inbox.open(Folder.READ_WRITE);

Message[] msg = inbox.getMessages();

FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
inbox.fetch(msg, profile);

for (int i = 0; i < msg.length; i++) {
//标记此邮件的flag标志对象的DELETED位为true,可以在读完邮件后直接删除该附件,具体执行时间是在调用
//inbox.close()方法的时候
msg[i].setFlag(Flags.Flag.DELETED, true);
handleMultipart(msg[i]);
System.out.println("****************************");
}
if (inbox != null) {
//参数为true表明阅读完此邮件后将其删除,更多的属性请参考mail.jar的API
inbox.close(true);
}
if (store != null) {
store.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

❹ JavaMail发送带图片的html邮件,OutLook 2007无法显示图片,Foxmail正常

你在 javamail 里面设置附件的时候,需要注意两个地方:


1)设置 subType 为 related (这个是必须的,否则有些程序会将内置的图当成附件来处理了)

2) 使用 MimeMultipart 来将各个内容分别 add 进去。


你可以直接参考下面链接的内容:

http://stackoverflow.com/questions/2996514/inline-images-in-email-using-javamail


这里面给你把部分内容直接复制出来了:

MimeMultipartrootContainer=newMimeMultipart();
rootContainer.setSubType("related");
rootContainer.addBodyPart();//notinfocushere
rootContainer.addBodyPart(createInlineImagePart());
...
message.setContent(rootContainer);
message.setHeader("MIME-Version","1.0");
message.setHeader("Content-Type",rootContainer.getContentType());
...
BodyPartcreateInlineImagePart(byte[])throwsMessagingException{
InternetHeadersheaders=newInternetHeaders();
headers.addHeader("Content-Type","image/jpeg");
headers.addHeader("Content-Transfer-Encoding","base64");
MimeBodyPartimagePart=newMimeBodyPart(headers,);
imagePart.setDisposition(MimeBodyPart.INLINE);
imagePart.setContentID("&lt;image&gt;");
imagePart.setFileName("image.jpg");
returnimagePart;

❺ 如何利用javamail发送带图片跟链接的邮件

代码如下:
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class EmailTest {

public static void main(String[] args) throws Exception{

Properties props = new Properties();

props.setProperty("mail.smtp.auth", "true");

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.host", "smtp.163.com");

Session session = Session.getInstance(props,

new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication("xxx","xxx");//这里分别填写发送email的用户名、密码

}

}

);

session.setDebug(true);

Message msg = new MimeMessage(session);

msg.setFrom(new InternetAddress("xxx"));//这里是发送方的email地址如:[email protected]

msg.setSubject("test javamail");

msg.setRecipients(RecipientType.TO,

InternetAddress.parse("xxx"));//这里是接收方的email地址如:[email protected]

msg.setContent("<a href=\"http://www.google.cn\">谷歌</a>","text/html;charset=gb2312");

Transport.send(msg);

}
}

阅读全文

与javamail发送邮件图片相关的资料

热点内容
压缩完了文件去哪里找 浏览:380
武装突袭3浩方联机版本 浏览:674
网络机顶盒移动网络 浏览:391
iphone手机百度云怎么保存到qq 浏览:148
数据库设计与实践读后感 浏览:112
js对象是什么 浏览:744
网页文件存pdf 浏览:567
文件夹正装 浏览:279
刚复制的文件找不到怎么办 浏览:724
试运行适用于哪些体系文件 浏览:987
ghost文件复制很慢 浏览:967
杰德原车导航升级 浏览:240
编程dest是什么意思 浏览:935
linux端口镜像 浏览:820
iphone5屏幕清尘 浏览:157
机顶盒密码怎么改 浏览:672
w7系统下载32位教程 浏览:618
pcb文件包括哪些内容 浏览:598
g00文件 浏览:607
用bat程序删除程序 浏览:516

友情链接