会不会是你的用户权限问题?
㈡ 用java写的邮件发送程序
界面自己写一下就可以了,把相关的参数传进去就可以了。 这个是我以前写的。用的javamail。 有main方法,测试一下自己的邮件,应该没问题的。希望可以帮到你。注意导入你需要的javamail.jar的包 -------------------------------------------------------------- package com.fourpane.mail; import java.util.Properties; import javax.mail.Address; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class TestMail { public static void main(String[] args) { //TestMail.sendMail(); //TestMail.receiveMail(); TestMail.deleteMail(); } /** * send mail */ public static void sendMail() { String host = "smtp.sina.com";//邮件服务器 String from = "[email protected]";//发件人地址 String to = "[email protected]";//接受地址(必须支持pop3协议) String userName = "xingui5624";//发件人邮件名称 String pwd = "******";//发件人邮件密码 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); session.setDebug(true); MimeMessage msg = new MimeMessage(session); try { msg.setFrom(new InternetAddress(from)); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//发送 msg.setSubject("我的测试...........");//邮件主题 msg.setText("测试内容。。。。。。。");//邮件内容 msg.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, userName, pwd);//邮件服务器验证 transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); System.out.println("send ok..........................."); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * receive mail */ public static void receiveMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String password = "******"; Properties props = new Properties(); Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("receive..............................."); Store store = session.getStore("pop3"); store.connect(host, userName,passWord);//验证 Folder folder = store.getFolder("INBOX");//取得收件文件夹 folder.open(Folder.READ_WRITE); Message msg[] = folder.getMessages(); System.out.println("邮件个数:" + msg.length); for(int i=0; i<msg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); StringBuffer from = new StringBuffer(); /** * 此for循环是我项目测试用的 */ for(int j=0; j<address.length; j++) { if (j > 0) from.append(";"); from.append(address[j].toString()); } System.out.println(message.getMessageNumber()); System.out.println("来自:" + from.toString()); System.out.println("大小:" + message.getSize()); System.out.println("主题:" + message.getSubject()); System.out.println("时间::" + message.getSentDate()); System.out.println("==================================================="); } folder.close(true);//设置关闭 store.close(); System.out.println("receive over............................"); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * delete mail */ public static void deleteMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String passWord = "******"; Properties props = new Properties(); //Properties props = System.getProperties();这种方法创建 Porperties 同上 Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("begin delete ..........."); Store store = session.getStore("pop3"); store.connect(host, userName, passWord);//验证邮箱 Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE);//设置我读写方式打开 int countOfAll = folder.getMessageCount();//取得邮件个数 int unReadCount = folder.getUnreadMessageCount();//已读个数 int newOfCount = folder.getNewMessageCount();//未读个数 System.out.println("总个数:" +countOfAll); System.out.println("已读个数:" +unReadCount); System.out.println("未读个数:" +newOfCount); for(int i=1; i<=countOfAll; i++) { Message message = folder.getMessage(i); message.setFlag(Flags.Flag.DELETED, true);//设置已删除状态为true if(message.isSet(Flags.Flag.DELETED)) System.out.println("已经删除第"+i+"邮件。。。。。。。。。"); } folder.close(true); store.close(); System.out.println("delete ok................................."); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * reply mail */ public static void replyMail() { //test } } 注意:此实现要求邮箱都支持pop3和smtp协议。现在老的网易邮箱都支持(2006年以前注册的),所以的sina的 qq的都可以,雅虎的部分支持,具体的可以在网上搜下把。 ============================================================================== 还有一种办法,也是我以前用到的。 其实最简单的发邮件方式是用Apache的Common组件中的Email组件,封装得很不错。 特简单。首先从Sun的网站上下载JavaMail框架实现,最新的版本是1.4.1。然后是JavaBeans Activation Framework,最新版本1.1.1,JavaMail需要这个框架。不过如果JDK是1.6的话就不用下了。1.6已经包括了JavaBeans Activation Framework。 最后从 http://commons.apache.org/email/ 下载最新的Common Email,版本1.1。 首先在Eclipse中建立一个新的Java工程,然后把JavaMail和Common Email解压缩,在工程中添加解压缩出来的所有Jar的引用。 代码: package org.fourpane.mail; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; public class Mail { public static void main(String[] args) { //SimpleEmail email = new SimpleEmail(); HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.163.com");//邮件服务器 email.setAuthentication("xingui5624", "******");//smtp认证的用户名和密码 try { email.addTo("[email protected]");//收信者 email.setFrom("[email protected]", "******");//发信者 email.setSubject("xingui5624的测试邮件");//标题 email.setCharset("UTF-8");//编码格式 email.setMsg("这是一封xingui5624的测试邮件");//内容 email.send();//发送 System.out.println("send ok.........."); } catch (EmailException e) { e.printStackTrace(); } } } 【如果发送不成功,可能是你的jar包问题,javamail 的jar可能和jdk1.5以上的j2ee的jar冲突。还有就是可能你的邮箱不支持pop3和smtp协议。】
求采纳
㈢ java 邮件操作
把它删除到已删除里面只需要数据库多对这个类型设置类型简乎即可,比如已删除是1,0是未删除,清塌如果点击删拦正悉除就修改数据库的字段将字段变成1就代表已删除了
㈣ 怎么用JAVA实现邮件发送
一个小例子,也可使用其他api
importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.Authenticator;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassTest{
//test
publicstaticvoidmain(String[]args)throwsException{
sendEmail("smtp.163.com","测试","测试","!!!收件人地址!!!","!!!发件人邮箱用户名!!!","!!!邮箱密码!!!","发件人昵称");
}
/**
*
*@paramsmtp
*@throwsException
*/
publicstaticvoidsendEmail(StringemailServer,Stringsubject,StringmailBody,Stringreceiver,finalStringusername,finalStringpassword,Stringnickname)throwsException{
Propertiesprops=newProperties();
props.put("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.host",emailServer);
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback","false");
props.setProperty("mail.smtp.port","465");
props.setProperty("mail.smtp.socketFactory.port","465");
Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
}
});
session.setDebug(true);
MimeMessagemimeMsg=newMimeMessage(session);
Multipartmp=newMimeMultipart();
mimeMsg.setSubject(MimeUtility.encodeText(subject,"utf-8",null));
nickname=MimeUtility.encodeText(nickname,"utf-8",null);
mimeMsg.setFrom(newInternetAddress(username,nickname,"UTF-8"));
BodyPartbp=newMimeBodyPart();
bp.setContent(mailBody,"text/html;charset=utf-8");
mp.addBodyPart(bp);
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiver));
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transporttransport=session.getTransport();
transport.connect(username,password);
Address[]allRecipients=mimeMsg.getAllRecipients();
transport.sendMessage(mimeMsg,allRecipients);
transport.close();
}
}
㈤ java 开发邮件问题
对照我以前写的,从程序上看没有什么错。你试试下面:
Part p = multipart.getBodyPart(j);
改为:BodyPart p = multipart.getBodyPart(j);
㈥ 如何用Java实现系统自动发送邮件/短信
找个短信平台注册,他会提供一个短信接口,用这个接口就可以发了。
㈦ java实现接收邮件,mail.jar
这个异常表示有类型转换错误,有个地方需要使用 javax.mail.Multipart 类型的对象,你用了 com.sun.mail.imap.IMAPInputStream 类型,所以回出现了这个异常。答
根据你给的有限的资料,暂时只能分析道这么多了。
㈧ 100高分诚求:Java邮件系统源代码
你的这个要求有点离谱,如果真的要的话
建议去这个找吧,源代码都有的
㈨ java编写邮件收发程序步骤
补充回答:如果不涉及到MIME,只是收发简单文本邮件。就会比较简单。因为就像你说的,smtp和pop3协议就是文本格式的。你用Socket建立连接后,就像读文件一样,一行一行的读数据,然后按照协议分析数据格式。例如如果开始时USER那么后面可能跟的就是用户等。
就是一个字符串解析和匹配的过程。网上好像有这类代码,自己找一个学习一下。我以前用C在68k上作过,不是很难。不过代码已经没有了。
你的是邮件客户端,功能类似于outlook,foxmail等,如果你能上网,就不需要邮件服务器,直接用自己的邮件账号来测试,例如如果你有一个sina的邮件账户,就可以从sina服务器收发邮件。
不过为了测试方便,还是上网去收一个邮件服务器把。例如foxmail server等。网上有教程,可以配置好的。
对于编程,既然要求用socket编写,那么就要熟悉java的socket编程,这部分倒是很简单。可能还需要看看多线程部分。
另外,你需要学习一下, smtp和pop3这两个网络协议的内容,因为你需要解析这两个协议。如果需要收发代附件的,还需要看mime的内容,不过估计不需要。
其实java有自己的类库javamail,可以实现手法邮件,功能很强大。不过既然要求必须用socket,那就不能这个了。
说的太罗嗦了。总结一下:
1)配置邮件服务器,搭建测试环境
2)熟悉java的socket编程、 Swing编程(编写界面)、多线程(选用)
3)熟悉smtp和pop3的内容(内容很多,了解基本的就可以)
网上应该有类似代码,可以用来参考。
㈩ 如何写一个JAVA类可以实现邮件发送功能,也可以实现群发功能
packagebyd.core;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.Socket;
importjava.nio.charset.Charset;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importsun.misc.BASE64Encoder;
/**
*该类使用Socket连接到邮件服务器,并实现了向指定邮箱发送邮件及附件的功能。
*
*@authorKouHongtao
*/
publicclassEmail{
/**
*换行符
*/
privatestaticfinalStringLINE_END=" ";
/**
*值为“true”输出高度信息(包括服务器响应信息),值为“false”则不输出调试信息。
*/
privatebooleanisDebug=true;
/**
*值为“true”则此乎在发送邮件{@linkMail#send()}过程中会读取服务器端谨局返回的消息,
*并在邮件发送完毕后将这些消息返回给用户。
*/
=true;
/**
*邮件服务器地址
*/
privateStringhost;
/**
*发件人邮箱地址
*/
privateStringfrom;
/**
*收件人邮箱地址
*/
privateList<String>to;
/**
*抄送地址
*/
privateList<String>cc;
/**
*暗送地址
*/
privateList<String>bcc;
/**
*邮件主题
*/
privateStringsubject;
/**
*用户名
*/
privateStringuser;
/**
*密码
*/
privateStringpassword;
/**
*MIME邮件类型
*/
privateStringcontentType;
/**
*用来绑定多个邮件单元{@link#partSet}
*的分隔标识,我们可以将邮件的正文及每一个附件都看作是一个邮件单元。
*/
privateStringboundary;
/**
*邮件单元分隔标识符,该属性将用来在邮件中作为分割各个邮件单元的标识。
*/
privateStringboundaryNextPart;
/**
*传输邮件所采用的编码
*/
;
/**
*设置邮件正文所用的字符集
*/
privateStringcharset;
/**
*内容描述
*/
;
/**
森晌悉*邮件正文
*/
privateStringcontent;
/**
*发送邮件日期的显示格式
*/
;
/**
*附件的默认MIME类型
*/
;
/**
*邮件单元的集合,用来存放正文单元和所有的附件单元。
*/
privateList<MailPart>partSet;
privateList<MailPart>alternativeList;
privateStringmixedBoundary;
;
/**
*不同类型文件对应的{@linkMIME}类型映射。在添加附件
*{@link#addAttachment(String)}时,程序会在这个映射中查找对应文件的
*{@linkMIME}类型,如果没有,则使用
*{@link#defaultAttachmentContentType}所定义的类型。
*/
privatestaticMap<String,String>contentTypeMap;
privatestaticenumTextType{
PLAIN("plain"),HTML("html");
privateStringv;
privateTextType(Stringv){
this.v=v;
}
publicStringgetValue(){
returnthis.v;
}
}
static{
//MIMEMediaTypes
contentTypeMap=newHashMap<String,String>();
contentTypeMap.put("xls","application/vnd.ms-excel");
contentTypeMap.put("xlsx","application/vnd.ms-excel");
contentTypeMap.put("xlsm","application/vnd.ms-excel");
contentTypeMap.put("xlsb","application/vnd.ms-excel");
contentTypeMap.put("doc","application/msword");
contentTypeMap.put("dot","application/msword");
contentTypeMap.put("docx","application/msword");
contentTypeMap.put("docm","application/msword");
contentTypeMap.put("dotm","application/msword");
}
/**
*该类用来实例化一个正文单元或附件单元对象,他继承了{@linkMail}
*,在这里制作这个子类主要是为了区别邮件单元对象和邮件服务对象,使程序易读一些。
*这些邮件单元全部会放到partSet中,在发送邮件{@link#send()}时,程序会调用
*{@link#getAllParts()}方法将所有的单元合并成一个符合MIME格式的字符串。
*
*@authorKouHongtao
*/
{
publicMailPart(){
}
}
/**
*默认构造函数
*/
publicEmail(){
defaultAttachmentContentType="application/octet-stream";
simpleDatePattern="yyyy-MM-ddHH:mm:ss";
boundary="--=_NextPart_zlz_3907_"+System.currentTimeMillis();
boundaryNextPart="--"+boundary;
contentTransferEncoding="base64";
contentType="multipart/mixed";
charset=Charset.defaultCharset().name();
partSet=newArrayList<MailPart>();
alternativeList=newArrayList<MailPart>();
to=newArrayList<String>();
cc=newArrayList<String>();
bcc=newArrayList<String>();
mixedBoundary="=NextAttachment_zlz_"+System.currentTimeMillis();
mixedBoundaryNextPart="--"+mixedBoundary;
}
/**
*根据指定的完整文件名在{@link#contentTypeMap}中查找其相应的MIME类型,
*如果没找到,则返回{@link#defaultAttachmentContentType}
*所指定的默认类型。
*
*@paramfileName
*文件名
*@return返回文件对应的MIME类型。
*/
(StringfileName){
Stringret=null;
if(null!=fileName){
intflag=fileName.lastIndexOf(".");
if(0<=flag&&flag<fileName.length()-1){
fileName=fileName.substring(flag+1);
}
ret=contentTypeMap.get(fileName);
}
if(null==ret){
ret=defaultAttachmentContentType;
}
returnret;
}
/**
*将给定字符串转换为base64编码的字符串
*
*@paramstr
*需要转码的字符串
*@paramcharset
*原字符串的编码格式
*@returnbase64编码格式的字符
*/
privateStringtoBase64(Stringstr,Stringcharset){
if(null!=str){
try{
returntoBase64(str.getBytes(charset));
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
}
return"";
}
/**
*将指定的字节数组转换为base64格式的字符串
*
*@parambs
*需要转码的字节数组
*@returnbase64编码格式的字符
*/
privateStringtoBase64(byte[]bs){
returnnewBASE64Encoder().encode(bs);
}
/**
*将给定字符串转换为base64编码的字符串
*
*@paramstr
*需要转码的字符串
*@returnbase64编码格式的字符
*/
privateStringtoBase64(Stringstr){
returntoBase64(str,Charset.defaultCharset().name());
}
/**
*将所有的邮件单元按照标准的MIME格式要求合并。
*
*@return返回一个所有单元合并后的字符串。
*/
privateStringgetAllParts(){
StringBuildersbd=newStringBuilder(LINE_END);
sbd.append(mixedBoundaryNextPart);
sbd.append(LINE_END);
sbd.append("Content-Type:");
sbd.append("multipart/alternative");
sbd.append(";");
sbd.append("boundary="");
sbd.append(boundary).append(""");//邮件类型设置
sbd.append(LINE_END);
sbd.append(LINE_END);
sbd.append(LINE_END);
addPartsToString(alternativeList,sbd,getBoundaryNextPart());
sbd.append(getBoundaryNextPart()).append("--");
sbd.append(LINE_END);
addPartsToString(partSet,sbd,mixedBoundaryNextPart);
sbd.append(LINE_END);
sbd.append(mixedBoundaryNextPart).append("--");
sbd.append(LINE_END);
//sbd.append(boundaryNextPart).
//append(LINE_END);
alternativeList.clear();
partSet.clear();
returnsbd.toString();
}
privatevoidaddPartsToString(List<MailPart>list,StringBuildersbd,
StringnextPartString){
intpartCount=list.size();
for(inti=0;i<partCount;i++){
Emailattachment=list.get(i);
StringattachmentContent=attachment.getContent();
if(null!=attachmentContent&&0<attachmentContent.length()){
sbd.append(nextPartString).append(LINE_END);
sbd.append("Content-Type:");
sbd.append(attachment.getContentType());
sbd.append(LINE_END);
sbd.append("Content-Transfer-Encoding:");
sbd.append(attachment.getContentTransferEncoding());
sbd.append(LINE_END);
Stringcd=attachment.getContentDisposition();
if(null!=cd){
sbd.append("Content-Disposition:");
sbd.append(cd);
sbd.append(LINE_END);
}
sbd.append(LINE_END);
sbd.append(attachmentContent);
sbd.append(LINE_END);
}
}
}
/**
*添加邮件正文单元
*/
privatevoidaddContent(){
if(null!=content){
MailPartpart=newMailPart();
part.setContent(toBase64(content));
part.setContentType("text/plain;charset=""+charset+""");
alternativeList.add(part);
}
}
privateStringlistToMailString(List<String>mailAddressList){
StringBuildersbd=newStringBuilder();
if(null!=mailAddressList){
intlistSize=mailAddressList.size();
for(inti=0;i<listSize;i++){
if(0!=i){
sbd.append(";");
}
sbd.append("<").append(mailAddressList.get(i)).append(">");
}
}
returnsbd.toString();
}
privateList<String>getrecipient(){
List<String>list=newArrayList<String>();
list.addAll(to);
list.addAll(cc);
list.addAll(bcc);
returnlist;
}
/**
*添加超文本内容
*
*@paramtext
*/
publicvoidaddHtmlContent(Stringtext){
addContent(text,TextType.HTML);
}
/**
*添加纯文本内容
*
*@paramtext
*/
publicvoidaddTextContent(Stringtext){
addContent(text,TextType.PLAIN);
}
privatevoidaddContent(Stringtext,TextTypetype){
if(null!=text){
MailPartpart=newMailPart();
part.setContent(toBase64(text));
part.setContentType("text/"+type.getValue()+";charset=""
+charset+""");
alternativeList.add(part);
}
}