老铁们,大家好,相信还有很多朋友对于j*a邮件服务器和J*a语言编写发送邮件怎么可以用password为登录密码登录的相关问题不太懂,没关系,今天就由我来为大家分享分享j*a邮件服务器以及J*a语言编写发送邮件怎么可以用password为登录密码登录的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
一、J*a语言编写发送邮件怎么可以用password为登录密码登录
在J*a中,可以使用J*aMail API和J*a Activation Framework(JAF)来发送电子邮件。以下是一个简单的示例,展示如何使用SMTP(简单邮件传输协议)发送一封电子邮件,其中包含用户名和密码:
j*a复制代码
import j*a.util.Properties;
import j*ax.mail.Message;
import j*ax.mail.MessagingException;
import j*ax.mail.PasswordAuthentication;
import j*ax.mail.Session;
import j*ax.mail.Transport;
import j*ax.mail.inter.InterAddress;
import j*ax.mail.inter.MimeMessage;
public class SendEmail{
public static void main(String[] args){
//定义SMTP服务器的、端口号和加密方式
String smtpHost="smtp.example.";
int smtpPort= 587;
String smtpSecure="tls";
//定义电子邮件的内容
String emailTo="";
String emailSubject="Test Email";
String emailBody="This is a test email sent using J*aMail API.";
//定义SMTP服务器的用户名和密码
String smtpUsername="your_username";
String smtpPassword="your_password";
//创建邮件会话的属*对象
Properties props= new Properties();
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.port", smtpPort);
props.put("mail.smtp.auth","true");
props.put("mail.smtp.starttls."+ smtpSecure,"true");
//创建邮件会话对象
Session session= Session.getInstance(props, new j*ax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(smtpUsername, smtpPassword);
}
});
try{
//创建MIME类型的邮件对象
Message message= new MimeMessage(session);
message.setFrom(new InterAddress(smtpUsername));
message.setRecipients(Message.RecipientType.TO, InterAddress.parse(emailTo));
message.setSubject(emailSubject);
message.setText(emailBody);
//发送邮件
Transport.send(message);
System.out.println("Email sent suessfully.");
} catch(MessagingException e){
System.out.println("Error sending email:"+ e.getMessage());
}
}
}
在上面的示例中,我们使用Session对象的getInstance方法创建一个邮件会话对象。在这个方法中,我们传递一个Properties对象和一个Authenticator对象。Properties对象包含SMTP服务器的配置信息,而Authenticator对象用于提供用户名和密码。在Authenticator的getPasswordAuthentication方法中,我们返回一个PasswordAuthentication对象,其中包含用户名和密码。这样,J*aMail API就会使用这些凭据来连接到SMTP服务器。
二、j*a发送邮件时出现的错误,端口什么的都开了
今天在做内网邮箱发送功能时报如下错误:
554 Relay rejected for policy reasons.
测试时给内容邮箱发送正常,给126发送就报如上错误,后来查看是权限限制的问题。
在网上查找到邮件发送时的常见问题总结,备注一下。
介绍邮件系统常见的错误代码及解释,还有客户端报错相关信息
按照下列“Q”代表问题,“A”代表解答。
Q:the server says:550 relaying mail to<> is not allowed
Q:The server says:550<>... relaying denied
Q:the server says:550 5.7.1 relaying not permitted:
A:使用某些Smtp服务器时,限制了收件人的,只能换一个Smtp服务器。
Q:The server says:550<>:local user only
Q:The server says:550<>:Invalid User
Q:The server says:550 Invalid recipient
A:使用163.NET,163.,yeah.Net和ease.之类的Smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属*”中的“个人信息”里面填写正确的邮件。
Q:the server says:551 delivery not allowed to non-local recipient
Q:The server says:553 Relay restriction.
Q:The server says:553 From<>, message blocked.
Q:The server says:553 sorry,you are not allow to use this SMTP to relay your eami
Q:The server says:553 sorry, that domain isn't in my list of allowed rcpthosts
A:使用21.,china.,371.,sina.等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属*”中的“个人信息”里面填写正确的邮件。
Q:The server says:505 client was not authenticated
Q:The server says:553 authentication is required to send mail as<>
A:使用263.和sohu.的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在“个人信息”中填写正确邮箱,又要选中“SMTP服务器需要认证”。
Q:The server says:535 Error:authenticatin failed
Q:The server says:535 Authentication unsuessful
Q:The server says:452 Insufficient system storage
A:在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。
Q:The server says:553<>...domain name required
Q:The server says:550 Unable to relay for...
A:多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中“POP3邮箱帐号”要使用“用户名#POP3”的格式,但在“帐户属*”中的“个人信息”中还是要填写一般的格式。
Q:The server says:553 mailbox name not allowed
A:收件人邮箱不允许,需检查收件人是否正确。
Q:the server says:553 sorry, your envelop sender is in my badmailfrom list
A:服务器限制了收件人的,只能换一个smtp服务器发信。
Q:the server says:554 Transaction failed
Q:The server says:451 Requested action aborted,errno=28
A:传输失败,检查网络问题。
Q:the server says:503 error:needmail mand
Q:The server says:503 need mail before RCPT.
Q:The server says:503 Bad sequence of mands
A:消息命令顺序出错,一般出现在其他错误之后,先检查之前出现的错误提示。
Q:The Server says:501 syntax.helo hostname
Q:The server says:501 Invalid domain name
Q:The server says:502 unimplemented mand
Q:the server says:503 5.0.0 polite people say HELO first
Q:The server says:533 relay restriction
Q:The server says:544<>:Recipient address rejected: Relay aess denied
A:传输中的语法错误,原因不明。
连接服务器错误,请检查您的网络设置。如果安装防火墙/杀*软件,请检查防火墙/杀*软件是否允许DreamMail程序访问 Inter。
账号“xxx”发送邮件错误,错误代码:554;错误信息:554 Relay rejected for policy reasons.(检查邮件系统是否有发送外网邮箱的权限)
附相关资料
SMTP有一组固定的响应代码,表示邮件服务器对于传送邮件要求的响应状况。其中 421、450、451、452、550、551、552、553、554等 9组代码表示您要求邮件服务器执行的动作不成功。
354
Start Mail input
开始传输邮件正文
421
<domain> Service not *ailable, closing transmission channel
括号内的主机无法提供正常服务,关闭传送管道,邮件将滞留在主机上
440
邮件址错误
445
Server Rejected
被封锁
450
Client host rejected, Cannot resolve PTR
Temporary Process Error
Resource temporarily un*iable,please try again later
Requested mail action not taken: mailbox un*ailable
无法 IP反查
Requested mail action not taken: mailbox un*ailable
所要求的邮件动作无法执行:邮件信箱无法提供服务,邮件将滞留在主机上
451
Domain of sender address does not resolve
qq trouble creating files in queue(#4.3.0)
queuename: Cannot create"qfCAA21081" in"/var/spool/mqueue"(euid=0): No space left on device
Requested action aborted, errno=28.
无法解析寄件者邮件
Requested action aborted: local error in processing
要求动作中断:本地端错误
Requested action aborted,errno=28
传送失败,检查网络问题。
452
Message for would exceed mailbox quota
Requested action not taken: insufficient system storage
要求动作无法执行:系统空间不足
Insufficient system storage
在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。
454
Client was not authenticated
安全因素,被封锁
472
no DNS A-data returned
无法 IP反查
501
Domain of sender address does not exist
无法 IP反查
Mailbox not found
5.1.1... User unknown
无此使用者
Syntax error,parameters in mand"RCPT TO:>"unrecognized or missing
no local part
Syntax error in recipient:
"@" or"." expected after"CC"
"@" or"." expected after"fau":
email格式l错误
503
Either sender or receiver must be local aount.
安全因素,权限不足
无此使用者,不是本主机转送信件的使用者
error:needmail mand
need mail before RCPT
Bad sequence of mands
消息命令顺序出错,一般出现在其他错误之后,先检查之前出现的错误提示。
5.0.0 polite people say HELO first
传输中的语法错误,原因不明
505
client was not authenticated
使用263.和sohu.的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在"个人信息"中填写正确邮箱,又要选中"SMTP服务器需要认证"。
521
This system is configured to reject mail from 211.20.70.148
安全因素,被封锁
535
Error:authenticatin failed
Authentication unsuessful
在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。
550
unknown user
User unknown
Invalid User
Recipient unknown
Mailbox disabled for this recipient
Unknown local part
Invalid recipient
Unable to relay for no such user
Recipient unknown
This aount is not allowed
recipient unknown
No such mail drop defined,user disabled
I don't know
Relaying is prohibited
Relaying denied
relaying mail to<> is not allowed
<>... relaying denied
5.7.1 relaying not permitted:
REJECT SMTP Protocol Returned a Permanent Error 550 Forwarding percent hack is not permitted
Requested action not taken: mailbox un*ailable
无此使用者,所要求动作无法执行:信箱不存在,邮件将退回给寄件者,或者限制了收件人的,只能换一个Smtp服务器。
System is busy
邮件系统错误
Subj similar too many!!
太多同主题信件
Relaying denied. IP name lookup failed
IP name lookup failed
DNS FAILURE
cannot route to sender address
无法 IP反查
Relaying denied
Mailbox un*ailable: This site may not be used as a relay agent.
无法转寄
<>:local user only
<>:Invalid User
Invalid recipient
使用163.,163.,yeah.和ease.之类的Smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的"帐户属*"中的"个人信息"里面填写正确的邮件。
Unable to relay for...
多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中"POP3邮箱帐号"要使用"用户名#POP3"的格式,但在"帐户属*"中的"个人信息"中还是要填写一般的格式。
551
we do not relay...
delivery not allowed to non-local recipient
无法转寄,使用21.,china.,371.,sina.等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的"帐户属*"中的"个人信息"里面填写正确的邮件。
User not local; please try<forward-path>
邮件服务器知道使用者不属于本地端,将尝试括号内的转送路径
552
Requested mail action aborted: exceeded storage allocation
所要求的动作中断:超出所分配的储存空间,邮件将退回给寄件者
Sorry, we don't allow mail from your host.
被封锁
553
sorry, that domain isn't in my list of allowed rcpthosts
mailbox name not allowed
邮件错误
Requested action not taken: mailbox name not allowed
sorry, your envelop sender is in my badmailfrom list
所要求的动作未执行:信箱不允许该动作执行,或者服务器限制了收件人的,只能换一个smtp服务器发信。
Relay restriction.
From<>, message blocked.
sorry,you are not allow to use this SMTP to relay your eami
sorry, that domain isn't in my list of allowed rcpthosts
使用21.,china.,371.,sina.等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的"帐户属*"中的"个人信息"里面填写正确的邮件。
authentication is required to send mail as<>
使用263.和sohu.的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在"个人信息"中填写正确邮箱,又要选中"SMTP服务器需要认证"。
<>...domain name required
多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中"POP3邮箱帐号"要使用"用户名#POP3"的格式,但在"帐户属*"中的"个人信息"中还是要填写一般的格式。
554
delivery error: dd This user doesn't h*e a yahoo. aount
delivery error: dd Sorry, your message to xxxxyahoo. cannot be delivered. This aount is over quota.
无此使用者
Transaction failed
传送失败,检查网络问题。
571
we don't aept junk mail(mail.sys..tw)
无效的寄件者
三、利用j*amail和POP3、SMPT协议实现邮件的收发
一简介 SMTP的全称是 Simple Mail Transfer Protocol即简单邮件传输协议用于邮件发送 SMTP认证简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP服务器 POP(Post Office Protocol)协议允许电子邮件客户端服务器上的邮件但是在客户端的操作(如移动邮件标记已读等)不会反馈到服务器上比如通过客户端收取了邮箱中的封邮件并移动到其他文件夹邮箱服务器上的这些邮件是没有同时被移动的而IMAP(Inter Mail Aess Protocol)提供webmail与电子邮件客户端之间的双向通信客户端的操作都会反馈到服务器上对邮件进行的操作服务器上的邮件也会做相应的动作同时 IMAP像POP那样提供了方便的邮件服务让用户能进行离线阅读 IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间主题发件人大小等信息后才作出是否的决定此外 IMAP更好地支持了从多个不同设备中随时访问新邮件总之 IMAP整体上为用户带来更为便捷和可靠的体验 POP更易丢失邮件或多次相同的邮件但 IMAP通过邮件客户端与webmail之间的双向同步功能很好地避免了这些问题注若在web邮箱中设置了保存到已发送使用客户端POP服务发信时已发邮件也会自动同步到网页端已发送文件夹内二利用SMTP协议发送邮件 package like email;import j*a io File;import j*a io UnsupportedEncodingException;import j*a util ArrayList;import j*a util Properties;import j*ax activation DataHandler;import j*ax activation DataSource;import j*ax activation FileDataSource;import j*ax mail Authenticator;import j*ax mail BodyPart;import j*ax mail Message;import j*ax mail MessagingException;import j*ax mail Multipart;import j*ax mail Session;import j*ax mail Transport;import j*ax mail inter AddressException;import j*ax mail inter InterAddress;import j*ax mail inter MimeBodyPart;import j*ax mail inter MimeMessage;import j*ax mail inter MimeMultipart;/***@author like*@E mail k*@CreateTime下午::*/public class SMTPSendTest{private static final int RECEIPT=;private static final String attachmentDir=;public static void sendEmail(Email emailInfo) throws UnsupportedEncodingException MessagingException{Properties props= new Properties() props put( mail*** tp host emailInfo getSmtpServer()) props put( mail*** tp port emailInfo getSmtpPort()) props put( mail*** tp auth true) Authenticator auth= new SMTPAuthenticator(emailInfo getUsername() emailInfo getPassword()) Session session= Session getInstance(props auth) session setDebug(false) Message msg= new MimeMessage(session) msg setFrom(new InterAddress(emailInfo getFrom() emailInfo getFromName())) msg setRecipients(Message RecipientType TO getEmailRecipient(emailInfo getTO())) msg setRecipients(Message RecipientType CC getEmailRecipient(emailInfo getCC())) msg setRecipients(Message RecipientType BCC getEmailRecipient(emailInfo getBCC())) if(emailInfo getReceipt()== RECEIPT){msg setHeader( Disposition Notification To emailInfo getFrom())}msg setSubject(emailInfo getSubject())//设置邮件内容(包括附件的HTML格式内容)msg setContent(getMultipart(emailInfo getContent() attachmentDir emailInfo getAttachment())) msg s*eChanges() Transport send(msg)}/***封装邮件**@param address*@return*@throws AddressException*/private static InterAddress[] getEmailRecipient(ArrayList<String> address) throws AddressException{int toLen=;if(address!= null){toLen= address size()}InterAddress[] addressTo= new InterAddress[toLen];if(toLen!=){String m_st_email=;for(int i=; i< toLen; i++){m_st_email=(String) address get(i) if(m_st_email!= null)addressTo[i]= new InterAddress(m_st_email trim())}}return addressTo;}private static Multipart getMultipart(String text String attachParentDir ArrayList<String> attachment) throws MessagingException{
lishixinzhi/Article/program/J*a/hx/201311/26993