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 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.processWindowEvent; 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_actionPerformed; } }); button2.setBounds(new Rectangle(244, 348, 88, 24)); button2.setLabel("重填"); button2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button2_actionPerformed; } }); 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 |