当前位置: 技术问答>java相关
javamail 的附件。。
来源: 互联网 发布时间:2015-10-07
本文导语: 请问各件大哈,我读取一个MAIL服务器得一个邮件的列表,但我如何确定一个邮件里面的附件并将他显示出来供下载? | 就80分问这么多东西,你真会过,其实你可以看看这些。 这些是我搜集...
请问各件大哈,我读取一个MAIL服务器得一个邮件的列表,但我如何确定一个邮件里面的附件并将他显示出来供下载?
|
就80分问这么多东西,你真会过,其实你可以看看这些。
这些是我搜集的。
本文章对:
发送普通邮件,接受普通邮件
发送带有附件的邮件,接收带有附件的邮件
发送html形式的邮件,接受html形式的邮件
发送带有图片的邮件等做了一个总结。
------------------------------------------------------------
/*注意点:
1。开发环境:jbuilder5,jdk1.2.2,javamail and javabeans activation framework.
Task 1:Download the latest version of the JavaMail API implementation from Sun.
Task 2:Download the latest version of the JavaBeans Activation Framework from Sun.
Task 3:Unzip the downloaded packages. You get a ZIP file for all platforms for both packages.You can use the jar tool to unzip the packages.
Task 4:Add the mail.jar file from the JavaMail 1.2 download and the activation.jar file from the JavaBeans Activation Framework download to your CLASSPATH.Copy the files to your extension library directory. For Microsoft Windows, and using the default installation copy, the command might look like the following:
cd javamail-1.2
copy mail.jar jdk1.3jrelibext
cd jaf-1.0.1
copy activation.jar jdk1.3jrelibext
If you don't like copying the files to the exention library directory, detailed instructions are available from Sun for setting your CLASSPATH on Windows NT.
Task 5:Go into the demo directory that comes with the JavaMail API implementation and compile the msgsend program to send a test message.
Task 6:Execute the program passing in a from address with the -o option, your SMTP server with the -M option, and the to address (with no option). You'll then enter the subject, the text of your message, and the end-of-file character (CTRL-Z) to signal the end of the message input.
Be sure to replace the from address, SMTP server, and to address.java msgsend -o from@address -M SMTP.Server to@address
If you are not sure of your SMTP server, contact your system adminstrator or check with your Internet Service Provider.
Task 7:Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...).
*/
package mail_send_rec_byjm;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
public String host="smtp.163.com";
public String username="abcdefg";
public String password="abcdefg";
public String mail_head_name="this is head of this mail";
public String mail_head_value="this is head of this mail";
public String mail_to="xyz@163.com";
public String mail_from="abcdefg@163.com";
public String mail_subject="this is the subject of this test mail";
public String mail_body="this is the mail_body of this test mail";
void jButton1_actionPerformed(ActionEvent e) {
try
{//此段代码用来发送普通电子邮件
Properties props = new Properties();//获取系统环境
Authenticator auth = new Email_Autherticator();//进行邮件服务器用户认证
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
//设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setContent("Hello","text/plain");//设置邮件格式
message.setSubject(mail_subject);//设置邮件主题
message.setText(mail_body);//设置邮件正文
message.setHeader(mail_head_name,mail_head_value);//设置邮件标题
message.setSentDate(new Date());//设置邮件发送日期
Address address = new InternetAddress(mail_from,"sunxiaoming");
message.setFrom(address); //设置邮件发送者的地址
//如果要对邮件发送者进行多个参数的设置,可以用以下语句
// Address address[] = {new InternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")};
// message.addFrom(address);
Address toAddress = new InternetAddress(mail_to);//设置邮件接收方的地址
message.addRecipient(Message.RecipientType.TO,toAddress);
// Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//设置邮件抄送者的地址
// message.addRecipient(Message.RecipientType.CC,ccAddress);
Transport.send(message);//发送邮件
/* // to get a specific instance from the session for your protocol.pass along the username and password
// (blank if unnecessary).send the message,and close the connection;
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host,username,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
*/
System.out.println("send ok!");
}
catch(Exception ex)
{
System.out.println("faild"+ex);
}
}
这些是我搜集的。
本文章对:
发送普通邮件,接受普通邮件
发送带有附件的邮件,接收带有附件的邮件
发送html形式的邮件,接受html形式的邮件
发送带有图片的邮件等做了一个总结。
------------------------------------------------------------
/*注意点:
1。开发环境:jbuilder5,jdk1.2.2,javamail and javabeans activation framework.
Task 1:Download the latest version of the JavaMail API implementation from Sun.
Task 2:Download the latest version of the JavaBeans Activation Framework from Sun.
Task 3:Unzip the downloaded packages. You get a ZIP file for all platforms for both packages.You can use the jar tool to unzip the packages.
Task 4:Add the mail.jar file from the JavaMail 1.2 download and the activation.jar file from the JavaBeans Activation Framework download to your CLASSPATH.Copy the files to your extension library directory. For Microsoft Windows, and using the default installation copy, the command might look like the following:
cd javamail-1.2
copy mail.jar jdk1.3jrelibext
cd jaf-1.0.1
copy activation.jar jdk1.3jrelibext
If you don't like copying the files to the exention library directory, detailed instructions are available from Sun for setting your CLASSPATH on Windows NT.
Task 5:Go into the demo directory that comes with the JavaMail API implementation and compile the msgsend program to send a test message.
Task 6:Execute the program passing in a from address with the -o option, your SMTP server with the -M option, and the to address (with no option). You'll then enter the subject, the text of your message, and the end-of-file character (CTRL-Z) to signal the end of the message input.
Be sure to replace the from address, SMTP server, and to address.java msgsend -o from@address -M SMTP.Server to@address
If you are not sure of your SMTP server, contact your system adminstrator or check with your Internet Service Provider.
Task 7:Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...).
*/
package mail_send_rec_byjm;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
public String host="smtp.163.com";
public String username="abcdefg";
public String password="abcdefg";
public String mail_head_name="this is head of this mail";
public String mail_head_value="this is head of this mail";
public String mail_to="xyz@163.com";
public String mail_from="abcdefg@163.com";
public String mail_subject="this is the subject of this test mail";
public String mail_body="this is the mail_body of this test mail";
void jButton1_actionPerformed(ActionEvent e) {
try
{//此段代码用来发送普通电子邮件
Properties props = new Properties();//获取系统环境
Authenticator auth = new Email_Autherticator();//进行邮件服务器用户认证
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
//设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setContent("Hello","text/plain");//设置邮件格式
message.setSubject(mail_subject);//设置邮件主题
message.setText(mail_body);//设置邮件正文
message.setHeader(mail_head_name,mail_head_value);//设置邮件标题
message.setSentDate(new Date());//设置邮件发送日期
Address address = new InternetAddress(mail_from,"sunxiaoming");
message.setFrom(address); //设置邮件发送者的地址
//如果要对邮件发送者进行多个参数的设置,可以用以下语句
// Address address[] = {new InternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")};
// message.addFrom(address);
Address toAddress = new InternetAddress(mail_to);//设置邮件接收方的地址
message.addRecipient(Message.RecipientType.TO,toAddress);
// Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//设置邮件抄送者的地址
// message.addRecipient(Message.RecipientType.CC,ccAddress);
Transport.send(message);//发送邮件
/* // to get a specific instance from the session for your protocol.pass along the username and password
// (blank if unnecessary).send the message,and close the connection;
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host,username,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
*/
System.out.println("send ok!");
}
catch(Exception ex)
{
System.out.println("faild"+ex);
}
}
|
我的做法是点附件的时候直接从附件存储的地方,比如数据库读取附件,然后判断附件类型,修改response的头部分,以流的形式返回浏览器。
在浏览器看来就是一个下载对话框。
在浏览器看来就是一个下载对话框。