java测试smtp连接失败_使用 javamail 连接 SMTP 时的错误

下面的代码希望能给你帮助:public class Mail extends javax.mail.Authenticator {

private String _user;

private String _pass;

private String[] _to;

public String[] get_to() {

return _to;

}

public void set_to(String[] _to) {

this._to = _to;

}

public String get_from() {

return _from;

}

public void set_from(String _from) {

this._from = _from;

}

public String get_subject() {

return _subject;

}

public void set_subject(String _subject) {

this._subject = _subject;

}

private String _from;

private String _port;

private String _sport;

private String _host;

private String _subject;

private String _body;

private boolean _auth;

private boolean _debuggable;

private Multipart _multipart;

public Mail() {

_host = "mail.messagingengine.com"; // default smtp server

_port = "465"; // default smtp port

_sport = "465"; // default socketfactory port

_user = ""; // username

_pass = ""; // password

_from = ""; // email sent from

_subject = ""; // email subject

_body = ""; // email body

_debuggable = false; // debug mode on or off - default off

_auth = true; // smtp authentication - default on

_multipart = new MimeMultipart();

// There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.

MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();

mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");

mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");

mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");

mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");

mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");

CommandMap.setDefaultCommandMap(mc);

}

public Mail(String user, String pass) {

this();

_user = user;

_pass = pass;

}

public boolean send() throws Exception {

Properties props = _setProperties();

if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {

Session session = Session.getInstance(props, this);

MimeMessage msg = new MimeMessage(session);

msg.setFrom(new InternetAddress(_from));

InternetAddress[] addressTo = new InternetAddress[_to.length];

for (int i = 0; i 

addressTo[i] = new InternetAddress(_to[i]);

}

msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);

msg.setSubject(_subject);

msg.setSentDate(new Date());

// setup message body

BodyPart messageBodyPart = new MimeBodyPart();

messageBodyPart.setText(_body);

_multipart.addBodyPart(messageBodyPart);

// Put parts in message

msg.setContent(_multipart);

// send email

Transport.send(msg);

return true;

} else {

return false;

}

}

public void addAttachment(String filename) throws Exception {

BodyPart messageBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource(filename);

messageBodyPart.setDataHandler(new DataHandler(source));

messageBodyPart.setFileName(filename);

_multipart.addBodyPart(messageBodyPart);

}

@Override

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(_user, _pass);

}

private Properties _setProperties() {

Properties props = new Properties();

props.put("mail.smtp.host", _host);

if(_debuggable) {

props.put("mail.debug", "true");

}

if(_auth) {

props.put("mail.smtp.auth", "true");

}

props.put("mail.smtp.port", _port);

props.put("mail.smtp.socketFactory.port", _sport);

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

props.put("mail.smtp.socketFactory.fallback", "false");

return props;

}

// the getters and setters

public String getBody() {

return _body;

}

public void setBody(String _body) {

this._body = _body;

}

// more of the getters and setters …..

}

我想错误是在:_port = "465"; // default smtp port

_sport = "465"; // default socketfactory port

和这一行:props.put("mail.messagingengine.com", _host);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用JavaMail获取邮件附件内容,需要进行以下步骤: 1. 导入JavaMailJava Activation Framework库。 2. 创建Session对象,设置SMTP服务器和端口号。 ```java Properties props = new Properties(); props.setProperty("mail.smtp.host", "smtp.gmail.com"); props.setProperty("mail.smtp.port", "587"); props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.starttls.enable", "true"); Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("yourusername@gmail.com", "yourpassword"); } }); ``` 3. 创建IMAPStore对象连接到邮箱。 ```java Store store = session.getStore("imap"); store.connect("imap.gmail.com", "yourusername@gmail.com", "yourpassword"); ``` 4. 获取邮件夹对象,打开邮件夹。 ```java Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); ``` 5. 遍历邮件夹中的邮件,获取附件。 ```java Message[] messages = inbox.getMessages(); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; String contentType = message.getContentType(); if (contentType.contains("multipart")) { Multipart multiPart = (Multipart) message.getContent(); for (int j = 0; j < multiPart.getCount(); j++) { MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(j); if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { String fileName = part.getFileName(); InputStream inputStream = part.getInputStream(); // 读取附件内容 // ... } } } } ``` 6. 关闭邮件夹和IMAPStore对象。 ```java inbox.close(false); store.close(); ``` 以上就是使用JavaMail获取邮件附件内容的基本步骤。需要注意的是,不同邮件服务器的设置可能会有所不同,需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值