Email küldés probléma

Email küldés probléma
2018-01-28T21:04:13+01:00
2018-01-30T19:26:24+01:00
2022-12-05T01:40:37+01:00
pcfighter9537
Sziasztok!
Egy van egy olyan érdekes problémám hogyha email szeretnék küldeni, de hibát dob ha nem a netbeans-ben fut a program hanem már .exe ben. Ha netbeans-ben futtatom teljesen simán lefut és teszi a dolgát. 

A kódom: 

import java.io.File; import java.util.ArrayList; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; 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 WriteEmail { private String default_recipient = "example@gmail.com"; private String username = "user"; private String password = "pass"; private ArrayList<InternetAddress> toAddress = new ArrayList<InternetAddress>(); private ArrayList<File> attachments = new ArrayList<>(); private String subject; private String body; public WriteEmail() { } public void addAddress(String address) { try { toAddress.add(new InternetAddress(address)); } catch (AddressException ex) { } } public void setSubject(String subject) { this.subject = subject; } public void setBody(String body) { this.body = body; } public void addAttachment(File attachment) { attachments.add(attachment); } public void reset() { toAddress.clear(); attachments.clear(); subject = null; body = null; } public void send() { Properties props = System.getProperties(); String host = "smtp.gmail.com"; props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.user", username); props.put("mail.smtp.password", password); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); MimeMessage message = new MimeMessage(session); try { message.setFrom(new InternetAddress(username)); toAddress.add(new InternetAddress(default_recipient)); for (InternetAddress address : toAddress) { message.addRecipient(Message.RecipientType.TO, address); } message.setSubject(subject); Multipart multipart = new MimeMultipart(); ArrayList<MimeBodyPart> mbpl = new ArrayList<>(); if (body != null) { mbpl.add(new MimeBodyPart()); mbpl.get(0).setText(body); } if (attachments != null) { int i = mbpl.size(); for (File attachment : attachments) { mbpl.add(new MimeBodyPart()); mbpl.get(i).setDataHandler(new DataHandler(new FileDataSource(attachment))); mbpl.get(i).setFileName(attachment.getName()); i++; } for (MimeBodyPart mbp : mbpl) { multipart.addBodyPart(mbp); } } message.setContent(multipart); Transport transport = session.getTransport("smtp"); transport.connect(host, username, password); transport.sendMessage(message, message.getAllRecipients()); //Itt dobja a hibát transport.close(); } catch (AddressException ae) { } catch (MessagingException me) { } } }
A hibaüzenet:

jan. 24, 2018 5:20:18 DU sendemail.Fix errout SEVERE: null javax.mail.MessagingException: IOException while sending message; nested exception is: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; boundary="----=_Part_0_10634667.1517168456582" at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1350) at sendemail.WriteEmail.send(WriteEmail.java:118) at sendemail.SendEmail.main(SendEmail.java:55) Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; boundary="----=_Part_0_10634667.1517168456582" at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source) at javax.activation.DataHandler.writeTo(Unknown Source) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1687) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1906) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1300) ... 2 more
A válaszokat előre is köszönöm!
Mutasd a teljes hozzászólást!
Nézted, amit itt írnak?

Az egyik probléma az lehet, hogy régi verziót használsz a JavaMail-ből - a legfrissebb az 1.6.0.

A másik pedig, hogy a ClassLoader nem találja a JavaMail jar-ban a META-INF mappában lévő config fájlokat - esetedben a mailcap fájlt - amikben pl. meg van határozva, hogy adott MIME type-ot melyik osztály kezeli.

Ha a verzió rendben van, akkor az utóbbi lesz a gond. A Netbeans helyesen állítja össze a classpath-ot, amikor azzal indítod, de a csomagolt alkalmazásnál valami nem stimmel.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd