JavaMail中出现SMTPSendFailedException错误求前辈指点!
package JavaMail;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Mail extends JFrame{
JButton sendButton = new JButton("发送邮件");
JLabel usernameLab = new JLabel("用户名: ");
JLabel passwordLab = new JLabel("密 码: ");
JLabel hostLab = new JLabel("服务器: ");
JLabel fromLab = new JLabel("发件人: ");
JLabel toLab = new JLabel("收件人: ");
JLabel subjectLab = new JLabel("主 题: ");
JLabel contentLab = new JLabel("内 容: ");
JTextField username = new JTextField(40);
JPasswordField password = new JPasswordField(40);
JTextField host = new JTextField(40);
JTextField fromFiled = new JTextField(40);
JTextField toField = new JTextField(40);
JTextField subjectField = new JTextField(40);
JTextArea content = new JTextArea(15, 15);
JScrollPane jsp = new JScrollPane(content);
public Mail()
{
Container contentPane = this.getContentPane();
JPanel labels = new JPanel(new GridLayout(6, 1));
JPanel fields = new JPanel(new GridLayout(6, 1));
labels.add(usernameLab);
fields.add(username);
labels.add(passwordLab);
fields.add(password);
labels.add(hostLab);
fields.add(host);
labels.add(fromLab);
fields.add(fromFiled);
labels.add(toLab);
fields.add(toField);
labels.add(subjectLab);
fields.add(subjectField);
Box north = Box.createHorizontalBox();
Box center = Box.createHorizontalBox();
north.add(labels);
north.add(fields);
center.add(contentLab);
center.add(jsp);
contentPane.add(north, "North");
contentPane.add(center, "Center");
content.hashCode();
JPanel south = new JPanel();
south.add(sendButton);
sendButton.addActionListener(new SendMail());
contentPane.add(south, "South");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("电子邮件发送");
this.setSize(300, 300);
this.setVisible(true);
}
class SendMail implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
try{
Properties props = new Properties(); //get sys-properties
props.put("mail.smtp.host", host.getText()); //save info of mail' send server
//create mail session according to properites
Session session = Session.getInstance(props, null);
final Message msg = new MimeMessage(session); //create mime mail object
Address to = new InternetAddress(toField.getText());
Address from = new InternetAddress(fromFiled.getText());
msg.setFrom(from); //set sender
msg.setRecipient(Message.RecipientType.TO, to); //set reciever
msg.setSentDate(new Date());
msg.setSubject(MimeUtility.encodeText(new String(
subjectField.getText().getBytes(), "GB2312"), "GB2312", "B"));
msg.setContent(content.getText(), "text/plain; charset=UTF-8");
Transport transport = session.getTransport("smtp");
transport.connect(host.getText(), username.getText(),
password.getText());
try{
Transport.send(msg);
}catch(MessagingException e) { e.printStackTrace(); }
content.setText("");
transport.close();
}
catch(Exception e) { e.printStackTrace(); }
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Mail mail = new Mail();
}
}
出现错误:
>>>>>Sending data EHLO CHINA-4BD1EB8AF<<<<<<
>>>>>Sending data EHLO CHINA-4BD1EB8AF<<<<<<
>>>>>Sending data MAIL FROM: <56329669@qq.com><<<<<<
>>>>>Sending data QUIT<<<<<<
org.apache.geronimo.javamail.transport.smtp.SMTPSendFailedException: Error: need EHLO and AUTH first !
界面:
用户名:56329669@qq.com
密 码:********
服务器:smtp.qq.com
发件人:56329669@qq.com
收件人:56329669@qq.com
主 题:asdasd
内 容:asdasd
按提示说是要先认证,但是我先设置为空在红色代码中可看到我后面设置了,难道这样不行么?
那敢如何 改 才行?