View Full Version : سوال: ارسال ايميل در جاوا
ravand
دوشنبه 22 خرداد 1391, 10:25 صبح
من اين اسكريپت رو براي ارسال ايميل پيدا كردم ولي كار نميكنه . بايد چيكار كنم؟
متشكرم.
package po;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;
public class TestDB {
private static Logger logger = Logger.getLogger(MailTestSend.class);
public static void main(String[] args) {
try {
// setup the mail server properties
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
// set up the message
Session session = Session.getInstance(props);
Message message = new MimeMessage(session);
// add a TO address
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("email@gmail.com"));
// add a multiple CC addresses
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("email@gmail.com,email@ymail.com"));
message.setSubject("Welcome to Java");
message.setContent("Hi, im testing a new way to send emails via java.", "text/plain");
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", 587, "email", "pass");
transport.sendMessage(message, message.getAllRecipients());
logger.error("successfully send email");
} catch (Exception e) {
logger.error(e, e);
}
}
}
ravand
دوشنبه 22 خرداد 1391, 13:15 عصر
صبح تا الان همه ي اينترنت رو زير و رو كردم ولي يه كد درست و حسابي پيدا نكردم كه بشه باهاش ايميل ارسال كرد. هر چي پيدا كردم اخطار ميداده.:متفکر:
آيا در كنار جاوا نياز به برنامه ي خاصي هست؟
ميخوام براي اين كار از جيميل استفاده كنم.
p_ooya
دوشنبه 22 خرداد 1391, 14:57 عصر
آیا خطا یا استثنایی اتفاق میافته؟ یه بار هم با پورت 25 امتحان کن!
ravand
دوشنبه 22 خرداد 1391, 14:59 عصر
متشكرم.
ميگم شما يه كد ساده تر از اين نداري بدي من ؟
ravand
دوشنبه 22 خرداد 1391, 15:15 عصر
پورت رو عوض كردم بازم اين اخطار رو ميده.
init:
deps-jar:
Compiling 1 source file to F:\jdk\bin\po\build\classes
F:\jdk\bin\po\src\po\TestDB.java:4: package javax.mail does not exist
import javax.mail.Message;
F:\jdk\bin\po\src\po\TestDB.java:5: package javax.mail does not exist
import javax.mail.Session;
F:\jdk\bin\po\src\po\TestDB.java:6: package javax.mail does not exist
import javax.mail.Transport;
F:\jdk\bin\po\src\po\TestDB.java:7: package javax.mail.internet does not exist
import javax.mail.internet.InternetAddress;
F:\jdk\bin\po\src\po\TestDB.java:8: package javax.mail.internet does not exist
import javax.mail.internet.MimeMessage;
F:\jdk\bin\po\src\po\TestDB.java:9: package org.apache.log4j does not exist
import org.apache.log4j.Logger;
F:\jdk\bin\po\src\po\TestDB.java:13: cannot find symbol
symbol : class Logger
location: class po.TestDB
private static Logger logger = Logger.getLogger(MailTestSend.class);
F:\jdk\bin\po\src\po\TestDB.java:13: cannot find symbol
symbol : class MailTestSend
location: class po.TestDB
private static Logger logger = Logger.getLogger(MailTestSend.class);
F:\jdk\bin\po\src\po\TestDB.java:13: cannot find symbol
symbol : variable Logger
location: class po.TestDB
private static Logger logger = Logger.getLogger(MailTestSend.class);
F:\jdk\bin\po\src\po\TestDB.java:24: cannot find symbol
symbol : class Session
location: class po.TestDB
Session session = Session.getInstance(props);
F:\jdk\bin\po\src\po\TestDB.java:24: cannot find symbol
symbol : variable Session
location: class po.TestDB
Session session = Session.getInstance(props);
F:\jdk\bin\po\src\po\TestDB.java:26: cannot find symbol
symbol : class Message
location: class po.TestDB
Message message = new MimeMessage(session);
F:\jdk\bin\po\src\po\TestDB.java:26: cannot find symbol
symbol : class MimeMessage
location: class po.TestDB
Message message = new MimeMessage(session);
F:\jdk\bin\po\src\po\TestDB.java:29: package Message does not exist
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("email@ymail.com"));
F:\jdk\bin\po\src\po\TestDB.java:29: cannot find symbol
symbol : variable InternetAddress
location: class po.TestDB
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("email@ymail.com"));
F:\jdk\bin\po\src\po\TestDB.java:32: package Message does not exist
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("php@yahoo.com,mohammad@yahoo.com"));
F:\jdk\bin\po\src\po\TestDB.java:32: cannot find symbol
symbol : variable InternetAddress
location: class po.TestDB
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("php@yahoo.com,mohammad@yahoo.com"));
F:\jdk\bin\po\src\po\TestDB.java:37: cannot find symbol
symbol : class Transport
location: class po.TestDB
Transport transport = session.getTransport("smtp");
18 errors
BUILD FAILED (total time: 1 second)
p_ooya
سه شنبه 23 خرداد 1391, 01:33 صبح
به نظر میرسه مشکل شما اینه که API مربوط به ایمیل، JavaMail رو نداری:
http://www.oracle.com/technetwork/java/javamail/index.html
ravand
سه شنبه 23 خرداد 1391, 08:59 صبح
بله دقيقا . مشكل من با نبود اين فايل هست.
ولي از ديروز تا حالا هر چي توي اين ادرسي كه شما دادي گشتم نتونستم دانلودش كنم. وقتي روي دكمه ي دانلودش ميزنم ميزه يه صفحه اي كه اصلا خبري از اين برنامه نيست. توي گوگل هم سرچ زدم گيرم نيومده ، اگه شما اين برنامه رو دانلود كردي و حجمش كم هست ممنون ميشم اينجا ضميمه كني.
متشكرم.
p_ooya
سه شنبه 23 خرداد 1391, 12:59 عصر
خیلی عجیبه. در هر حال من برات دانلود کردم ولی نمی دونم چرا نمی تونم ضمیمه کنم. اول سایت گفت سایزش بزرگه، بعد هم که به چند فایل کوچکتر تقسیمش کردم باز هم اجازه نداد. شاید مسئله از اینترنت من باشه. به هر حال من از لینک زیر دانلود کردم. توی این صفحه اول گزینه Accept License Agreement رو انتخاب می کنی و بعد هم دانلود میکنی. ممنکه با آی پی های ایران مشکل داشته باشه، در اینصورت باید از ای پی دیگه ای استفاده کنی. اگه باز هم نشد به من بگو تا برات از طریق ایمیل بفرستم
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.5-oth-JPR
پ.ن: حجمش تنها دو مگابایت هست!
همایون افشاری
سه شنبه 23 خرداد 1391, 15:31 عصر
این لینک رو امتحات کنید :
http://olex.openlogic.com/packages/javamail
ravand
سه شنبه 23 خرداد 1391, 16:01 عصر
والله من هر جايي از اين صفحه كه كليك ميكنم نميتونم اون برنامه رو دانلود كنم .
spiderman200700
سه شنبه 23 خرداد 1391, 16:29 عصر
http://olex.openlogic.com/package_versions/download/4348?package_version_id=146&path=openlogic%2Fjavamail%2F1.4%2Fjavamail-1.4-all-bin.zip
سورسش:
http://olex.openlogic.com/package_versions/download/4349?package_version_id=146&path=openlogic%2Fjavamail%2F1.4%2Fjavamail-1.4-all-src.zip
ravand
سه شنبه 23 خرداد 1391, 19:11 عصر
ببخشيد من از اين همه اسكريپتي كه شما فرستاديد چيزي سر در نميارم.
توي اينايي كه فرستاديد برنامه ي JavaMail هم كه براي ارسال ايميل نياز هست وجود داره؟ اگه اين برنامه هم باشه من يه برنامه ساده براي ارسال ايميل گير ميارم.
من هدفم يادگيري هست . تا اينكه يه برنامه ي آماده گير بيارم و ازش استفاده كنم.
ravand
سه شنبه 23 خرداد 1391, 19:27 عصر
88194
يه فايلي رو گير اوردم به نام mail.jar ولي مطمئن نيستم خودش باشه يا نه. براي همين گذاشتمش اينجا تا از شما بپرسم .
كدهاي ايميلم كه پيدا كرده بودم با اين فايل كار نكرد.
p_ooya
چهارشنبه 24 خرداد 1391, 01:11 صبح
API ایمیل از اوراکل همراه با JavaDoc.
http://www.up.perfo.ir/images/r8j5pb9h78ubylbubrp2.zip
ravand
چهارشنبه 24 خرداد 1391, 10:00 صبح
API ایمیل از اوراکل همراه با JavaDoc.
http://www.up.perfo.ir/images/r8j5pb9h78ubylbubrp2.zip
ايني كه شما داديد رو آقاي spiderman200700 هم فرستادن. ولي مشكل اينجاست كه من نميدونم چجوري بايد ازش استفاده كنم. چون من مبتدي هستم.
من فقط شنيدم يه فايل به نام mail.jar هست كه در قسمت liberari در برنامه ي NetBeans اضافه كنم. توي پوشه اي كه شما و آقاي spiderman200700 داديد يه فايلي با همين نام هست منم اونو اضافه كردم و كدم رو اجرا كردم ولي كار نكرد.
ممنون ميشم راهنماييم كنيد.
ravand
جمعه 26 خرداد 1391, 12:05 عصر
بالاخره در موردش تحقیق کردم. و تونستم یه چیز ساده پیدا کنم:
برای ارسال ایمیل باید فایل mail.jar را داخل پوشه ی test همانطور که package test; مشخص کرده قرار بدید. بعد در برنامه ی netbeans در تب project و روی libraries راست کلیک کرده و گزینه ی add jar/folder را کلیک کنید و فایل mail.jar را اضافه کنید. و سپس کدهای زیر را وارد کنید:
package test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Main {
public static void main(String[] args) {
final String username = "from@gmail.com";
final String password = "password";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("from@gmail.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("to@ymail.com"));
message.setSubject("تستی");
message.setText("سلام دوست عزیز,"
+ "\n\n ایمیل من را دریافت کردید؟");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
منبع مطلب : http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/
88277
spiderman200700
جمعه 26 خرداد 1391, 17:09 عصر
مطمئنی با این کد تونستی میل ارسال کنی؟
من اینو نوشتم قبلا، ولی AuthenticationFailedException پیش میاره.
واسه شما ارسال میشه؟
ravand
جمعه 26 خرداد 1391, 18:26 عصر
بله . مطمئنم.
من دو بار باهاش ایمیل ارسال کردم.
سرویس ایمیل شما حتما باید جیمیل گوگل باشه.
برای من پیام موفقیت داد و اخطاری نداد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.