java 发送附件,在java中作为附件发送一个文件

i have a java code in that i must send a attachment, it may be .doc,.db or .file. So i use the following code, the message was delivered successfully and particular attachment file was not send and also received.

My Code is:

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.Message.RecipientType;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

public class SendEmail {

private String from = "example1@gmail.com";

private String to;

private String subject;

private String text;

String filename = "hardWare_Dtls.file";

String host = "smtp.gmail.com";

public SendEmail(String from, String to, String subject, String text,String filename) {

// System.out.println("From Adress inside constr"+from);

this.from = from;

this.to = to;

this.subject = subject;

this.text = text;

this.filename=filename;

}

public void send() {

Properties props = System.getProperties();

System.out.println("Email Options SendEmail");

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

props.put("mail.smtp.user", from);

props.put("mail.smtp.password", "123456");

props.put("mail.smtp.port", "587"); // 587 is the port number of yahoo

// mail

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

props.put("mail.smtp.starttls.enable", "true");

Session mailSession = Session.getDefaultInstance(props, null);

Message simpleMessage = new MimeMessage(mailSession);

InternetAddress fromAddress = null;

InternetAddress toAddress = null;

try {

fromAddress = new InternetAddress(from);

toAddress = new InternetAddress(to);

} catch (AddressException e) {

// TODO Auto-generated catch block

// e.printStackTrace();

System.out.println("Address Exception" + e.getMessage());

}

try {

System.out.println("From Address" + fromAddress);

simpleMessage.setFrom(fromAddress);

simpleMessage.setRecipient(RecipientType.TO, toAddress);

System.out.println("To Address" + toAddress);

simpleMessage.setSubject(subject);

simpleMessage.setText(text);

simpleMessage.setSentDate(new Date());

MimeBodyPart attachmentPart = new MimeBodyPart();

FileDataSource fileDataSource = new FileDataSource(filename) {

@Override

public String getContentType() {

return "application/octet-stream";

}

};

attachmentPart.setDataHandler(new DataHandler(fileDataSource));

attachmentPart.setFileName(filename);

Multipart multipart = new MimeMultipart();

// multipart.addBodyPart(messagePart);

multipart.addBodyPart(attachmentPart);

// simpleMessage.setText(attachment);

Transport transport = mailSession.getTransport("smtps");

transport.connect("smtp.gmail.com", "example1@gmail.com",

"123456");

simpleMessage.saveChanges();

transport.sendMessage(simpleMessage,

simpleMessage.getAllRecipients());

Transport.send(simpleMessage);

transport.close();

// Transport.send(simpleMessage);

} catch (MessagingException e) {

// TODO Auto-generated catch block

// e.printStackTrace();

System.out.println("Messagine Exception" + e.getMessage());

}

}

}

in this code what mistake i had. If any other code for sending a message with attachment using Javacode, kindly send me. thanks in Advance.

I use this code in my Main Class:

String from = "example@gmail.com";

String to = "example@yahoo.com";

String subject = "Sample Text Message";

String message = "Sample Msg with File attachment";

String filename="hardWare_Dtls.file";

SendEmail sendMail = new SendEmail(from, to, subject, message,filename);

sendMail.send();

解决方案

You have pretty much all the pieces but you should use a MimeMessage (instead of just Message), and set its content to be your Multipart. I think you actually tried to do that but your code wouldn't compile so you commented out the line:

// simpleMessage.setText(attachment);

Instead of that do this:

((MimeMessage) simpleMessage).setContent(multipart);

And test again. It should work.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值