// 请看下面通过代理服务器的例子: // 代理服务器的IP:172.16.9.105 // 端口为:80 // 怎样才能transport.connect()connect到80端口?? import java.io.*; import java.net.InetAddress; import java.util.Properties; import java.util.Date; import javax.activation.*; import javax.mail.*; import javax.mail.internet.*; public void sendMail(String pwd) { String to = "[email protected]"; String from = "[email protected]"; String server = "172.16.9.105"; String user = "toAddr#smtp.163.net"; String password = pwd; try{ Properties props = new Properties (); props.put("mail.smtp.host", server); props.put("mail.smtp.auth", "true"); props.put("mail.bebug", "true"); //URLName urlName = new URLName(server); //PasswordAuthentication pa = new PasswordAuthentication(user, password); Session sendMailSession = Session.getDefaultInstance(props, null); sendMailSession.setDebug(true); //sendMailSession.setPasswordAuthentication(urlName, pa); //SMTPTransport transport = new SMTPTransport(sendMailSession, null); Transport transport = sendMailSession.getTransport("smtp"); Message msg = new MimeMessage(sendMailSession); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = {new InternetAddress(to)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("Java Mail Test"); msg.setHeader("X-Mailer", "msgsend"); msg.setSentDate(new Date()); //msg.setText ("Lalalala......"); MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText("Lalalala......."); // create the second message part MimeBodyPart mbp2 = new MimeBodyPart(); // attach the file to the message FileDataSource fds = new FileDataSource("c://finmek.log"); 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); transport.connect(server, user, password); //transport.connect(); transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); } catch(Exception ex) { ex.printStackTrace(); } }运行后产生的错误提示:DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth trueDEBUG: SMTPTransport trying to connect to host "172.16.9.105", port 25javax.mail.MessagingException: Could not connect to SMTP host: 172.16.9.105, port: 25; nested exception is: java.net.ConnectException: Connection refused: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:695) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:168) at javax.mail.Service.connect(Service.java:227) at javax.mail.Service.connect(Service.java:131) at testjava.MainFrm.sendMail(MainFrm.java:123) at testjava.MainFrm.jButton1_actionPerformed(MainFrm.java:134) at testjava.MainFrm$1.actionPerformed(MainFrm.java:49) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250) at javax.swing.plaf.basic.BasicRootPaneUI$DefaultAction.actionPerformed(BasicRootPaneUI.java:156) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1702) at javax.swing.JComponent.processKeyBinding(JComponent.java:2156) at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:252) at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:205) at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2223) at javax.swing.JComponent.processKeyBindings(JComponent.java:2216) at javax.swing.JComponent.processKeyEvent(JComponent.java:2123) at java.awt.Component.processEvent(Component.java:3555) at java.awt.Container.processEvent(Container.java:1167) at java.awt.Component.dispatchEventImpl(Component.java:2595) at java.awt.Container.dispatchEventImpl(Container.java:1216) at java.awt.Component.dispatchEvent(Component.java:2499) at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2162) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2142) at java.awt.Container.dispatchEventImpl(Container.java:1203) at java.awt.Window.dispatchEventImpl(Window.java:918) at java.awt.Component.dispatchEvent(Component.java:2499) at java.awt.EventQueue.dispatchEvent(EventQueue.java:336) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:134) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:96) at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)
// 代理服务器的IP:172.16.9.105
// 端口为:80
// 怎样才能transport.connect()connect到80端口?? import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date; import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*; public void sendMail(String pwd) {
String to = "[email protected]";
String from = "[email protected]";
String server = "172.16.9.105";
String user = "toAddr#smtp.163.net";
String password = pwd; try{
Properties props = new Properties ();
props.put("mail.smtp.host", server);
props.put("mail.smtp.auth", "true");
props.put("mail.bebug", "true"); //URLName urlName = new URLName(server);
//PasswordAuthentication pa = new PasswordAuthentication(user, password);
Session sendMailSession = Session.getDefaultInstance(props, null);
sendMailSession.setDebug(true); //sendMailSession.setPasswordAuthentication(urlName, pa);
//SMTPTransport transport = new SMTPTransport(sendMailSession, null);
Transport transport = sendMailSession.getTransport("smtp");
Message msg = new MimeMessage(sendMailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("Java Mail Test");
msg.setHeader("X-Mailer", "msgsend");
msg.setSentDate(new Date());
//msg.setText ("Lalalala......"); MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText("Lalalala......."); // create the second message part
MimeBodyPart mbp2 = new MimeBodyPart(); // attach the file to the message
FileDataSource fds = new FileDataSource("c://finmek.log");
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); transport.connect(server, user, password);
//transport.connect();
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
} catch(Exception ex) {
ex.printStackTrace();
}
}运行后产生的错误提示:DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth trueDEBUG: SMTPTransport trying to connect to host "172.16.9.105", port 25javax.mail.MessagingException: Could not connect to SMTP host: 172.16.9.105, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:695)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:168)
at javax.mail.Service.connect(Service.java:227)
at javax.mail.Service.connect(Service.java:131)
at testjava.MainFrm.sendMail(MainFrm.java:123)
at testjava.MainFrm.jButton1_actionPerformed(MainFrm.java:134)
at testjava.MainFrm$1.actionPerformed(MainFrm.java:49)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.plaf.basic.BasicRootPaneUI$DefaultAction.actionPerformed(BasicRootPaneUI.java:156)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1702)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2156)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:252)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:205)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2223)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2216)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2123)
at java.awt.Component.processEvent(Component.java:3555)
at java.awt.Container.processEvent(Container.java:1167)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1216)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2162)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2142)
at java.awt.Container.dispatchEventImpl(Container.java:1203)
at java.awt.Window.dispatchEventImpl(Window.java:918)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:336)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:134)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:96)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)