Topic: 用javamail发邮件(含附件)

  Print this page

1.用javamail发邮件(含附件) Copy to clipboard
Posted by: wnnet
Posted on: 2002-12-06 15:15

作者:◆后街男孩◆
日期:2000-12-14 17:21:16
转贴自www.java.com.cn

//Title: Your Product Name
//Version:
//Copyright: Copyright Coffee 1999
//Author: Your Name
//Company: Your Company
//Description: Your description

package Mail;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendMail extends Frame {
Label label1 = new Label();
TextField textField1 = new TextField();
Label label2 = new Label();
TextField textField2 = new TextField();
Label label3 = new Label();
TextArea textArea1 = new TextArea();
Label label4 = new Label();
TextField textField3 = new TextField();
Button button1 = new Button();
Button button2 = new Button();

public SendMail() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEventEnvelope;
if(e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public static void main(String[] args) {
SendMail sendMail1 = new SendMail();
sendMail1.setSize (400,400);
sendMail1.show (true);
}

private void jbInit() throws Exception {
label1.setBounds(new Rectangle(41, 38, 45, 23));
label1.setText("收信人");
this.setLayout(null);
this.setSize (400,400);
textField1.setBounds(new Rectangle(110, 36, 174, 23));
label2.setBounds(new Rectangle(42, 75, 38, 23));
label2.setText("主题");
textField2.setBounds(new Rectangle(110, 76, 173, 23));
label3.setBounds(new Rectangle(43, 148, 38, 23));
label3.setText("内容");
textArea1.setBounds(new Rectangle(110, 155, 256, 170));
label4.setBounds(new Rectangle(45, 111, 44, 23));
label4.setText("附件");
textField3.setBounds(new Rectangle(110, 115, 173, 23));
button1.setBounds(new Rectangle(70, 348, 88, 24));
button1.setLabel("发送");
button1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {
button1_actionPerformedEnvelope;
}
});
button2.setBounds(new Rectangle(244, 348, 88, 24));
button2.setLabel("重填");
button2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {
button2_actionPerformedEnvelope;
}
});
this.add(label1, null);
this.add(textField1, null);
this.add(textField2, null);
this.add(textField3, null);
this.add(textArea1, null);
this.add(label2, null);
this.add(label4, null);
this.add(label3, null);
this.add(button2, null);
this.add(button1, null);
}

void button2_actionPerformed(ActionEvent e) {
textField1.setText ("");
textField2.setText ("");
textField3.setText ("");
textArea1.setText ("");
}

void button1_actionPerformed(ActionEvent e) {
String to,from,subject,message,attachment;
from="toone@mail.com";
to=textField1.getText ();
if(to.trim ().equals ("")){
JOptionPane.showMessageDialog(this, "收信人不能为空!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
message=textArea1.getText();
attachment=textField3.getText ();
if(message.trim ().equals ("")&&attachment.trim ().equals ("")){
JOptionPane.showMessageDialog(this, "内容和附件不能都为空!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
if(to.indexOf ("@")==-1) {
JOptionPane.showMessageDialog(this, "无效的收信人地址!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
subject=textField2.getText ().trim ();
if(subject.equals (""))
if(JOptionPane.showConfirmDialog(this,"你不需要设置主题吗?","系统提示",0)!=0)
return;
File file=new File(attachment);
if(!attachment.equals ("")){
if(!file.isFile ()){
JOptionPane.showMessageDialog(this, "无效的附件名!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
}
//以上程序是检验输入的有效性

// create some properties and get the default Session
Properties props = System.getProperties();
props.put("mail.smtp.host", "192.168.0.1");
Session session = Session.getDefaultInstance(props, null);
session.setDebug(false);

try{
// create a message
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.addHeader ("toone","fangjianhua");
if(attachment.equals ("")){
System.out.println ("This is plain mail");
msg.setText (message);
}
else {
System.out.println ("this is a multipart mail");
// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(message);

// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();

// attach the file to the message
FileDataSource fds = new FileDataSource(file);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());

// create the Multipart and its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);

// add the Multipart to the message
msg.setContent(mp);
}
msg.setSentDate(new Date());
// send the message
//for(int i=0;i<10;i++)
Transport.send(msg);
//System.out.println ("Send a mail success");
JOptionPane.showMessageDialog(this, "邮件发送成功", "系统提示",JOptionPane.INFORMATION_MESSAGE );
}
catch(Exception ex){
JOptionPane.showMessageDialog(this, "发送邮件失败", "错误", JOptionPane.ERROR_MESSAGE);
}

}
}

2.对邮件系统的看法 [Re: wnnet] Copy to clipboard
Posted by: guansanwu
Posted on: 2002-12-06 16:56

其实做邮件系统,用javamial的API只是完成一部分功能,但要完成支持多域名等功能就需要改postfix(如果SMTP采用postfix),整个系统架构的灵活性,数据库的考虑,分布的考虑很多。市场上的很多webmail烂,就是这些没有处理好。

3.不能用 [Re: wnnet] Copy to clipboard
Posted by: 独来独网
Posted on: 2002-12-06 16:56

用过吗?我怎么不能用呀!??


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923