الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

send email

بدأه محمد1991 في 24 أبريل 2012 · 8 رد · 2,738 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

يوجد لدي احد الازرار في برنامجي بالضغط عليه يقوم بارسال رسالة عبر البريد الالكتروني

الى عنوان معروف لديه

بحث عن طريقة ارسال بريد باستخدام الجافا عبر العديد من المواقع

To send an email using your Java Application is simple enough but to start with you should have JavaMail API and Java Activation Framework (JAF) installed on your machine.

You can download latest version of JavaMail (Version 1.2) from Java's standard website.

You can download latest version of JAF (Version 1.1.1) from Java's standard website.

حملت الملفات ولكن بعد ربطها بالنت بينز

ظهر لدي ال

run:
javax.mail.SendFailedException: Sending failed;
  nested exception is: 
	javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at javax.mail.Transport.send0(Transport.java:219)
	at javax.mail.Transport.send(Transport.java:81)
	at SendEmail.main(SendEmail.java:47)
BUILD SUCCESSFUL (total time: 2 seconds)

هذا هو الكود

// File Name SendEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail
{
   public static void main(String [] args)
   {

      // Recipient's email ID needs to be mentioned.
      String to = "nor_alhaya@hotmail.com";

      // Sender's email ID needs to be mentioned
      String from = "nor_alhaya@hotmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Now set the actual message
         message.setText("This is actual message");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

تم تعديل هذه المشاركة بواسطة محمد1991 في 24 أبريل 2012 في 17:15

#2

الخطأ أنك وضعت الـlocalhost (أي جهازك) على أنه خادم البريد والبرنامج يحاول الإتصال به ويرد بأنه غير موجود. يلزمك خادم smtp أولاً. هناك وحدات لجافا لإختبار إرسال البريد منها Dumbster أو SubEtha SMTP تمكنك من عمل خادم smtp محلي وهمي كي تختبر إرسال البريد.

#3
Mr.B كتب:

الخطأ أنك وضعت الـlocalhost (أي جهازك) على أنه خادم البريد والبرنامج يحاول الإتصال به ويرد بأنه غير موجود. يلزمك خادم smtp أولاً. هناك وحدات لجافا لإختبار إرسال البريد منها Dumbster أو SubEtha SMTP تمكنك من عمل خادم smtp محلي وهمي كي تختبر إرسال البريد.

كيف اقوم بعمل خادم وهمي من هذه الانواع

هل يتم ذلك برمجة في الجافا ام شي اخر ؟؟

#4

نعم يلزمك كتابته. لست مبرمج جافا لذا ﻻ أستطيع مساعدتك بهذا. لكن يمكنك تحميل مُفسّر بايثون من هنا (حمّل Python 2.7.3 Windows Installer ) ويمكنك الآن عمل خادم smtp بسطر واحد (إكتبه في سطر الأوامر cmd) :

> python -m smtpd -n -c DebuggingServer localhost:1025

الآن سيصبح لديك خادم smtp يعمل على العنوان المحلي localhost والمنفذ 1025. فقط أضف على كُود الجافا الخاص بك هذا السطر :

....
      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      properties.setProperty("mail.smtp.port", "1025"); // حدد المنفذ بـ1025

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);
....

كي تحدد المنفذ. ثُم شغّل التطبيق ويفترض أن ترى مثل هذه الرسالة تقريباً على cmd :

> python -m smtpd -n -c DebuggingServer localhost:1025---------- MESSAGE FOLLOWS ----------
From: nor_alhaya@hotmail.com
To: nor_alhaya@hotmail.com
X-Peer: 127.0.0.1
Sent message successfully....
------------ END MESSAGE -----------

ويعني أن تطبيقك يعمل بشكل سليم.

تم تعديل هذه المشاركة بواسطة Mr.B في 24 أبريل 2012 في 19:16

#5
Mr.B كتب:

نعم يلزمك كتابته. لست مبرمج جافا لذا ﻻ أستطيع مساعدتك بهذا. لكن يمكنك تحميل مُفسّر بايثون من هنا (حمّل Python 2.7.3 Windows Installer ) ويمكنك الآن عمل خادم smtp بسطر واحد (إكتبه في سطر الأوامر cmd) :

> python -m smtpd -n -c DebuggingServer localhost:1025

الآن سيصبح لديك خادم smtp يعمل على العنوان المحلي localhost والمنفذ 1025. فقط أضف على كُود الجافا الخاص بك هذا السطر :

....
      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      properties.setProperty("mail.smtp.port", "1025"); // حدد المنفذ بـ1025

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);
....

كي تحدد المنفذ. ثُم شغّل التطبيق ويفترض أن ترى مثل هذه الرسالة تقريباً على cmd :

> python -m smtpd -n -c DebuggingServer localhost:1025

---------- MESSAGE FOLLOWS ----------

From: nor_alhaya@hotmail.com

To: nor_alhaya@hotmail.com

X-Peer: 127.0.0.1

Sent message successfully....

------------ END MESSAGE -----------

ويعني أن تطبيقك يعمل بشكل سليم.

وهذا التطبيق يعمل فقط على الجهاز الحالي ..

#6

اذا أردت تجربته على خادم smtp للهوتميل

استبدل localhost الموجودة هنا:

// Assuming you are sending email from localhost

String host = "localhost";

بعنوان الخادم:

smtp.live.com

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7
Wajdy Essam كتب:

اذا أردت تجربته على خادم smtp للهوتميل

استبدل localhost الموجودة هنا:

// Assuming you are sending email from localhost

String host = "localhost";

بعنوان الخادم:

smtp.live.com

بالتوفيق،

غيرتها

properties.setProperty("mail.smtp.host" , "smtp.live.com");

تغير نوع الخطا فقط

javax.mail.SendFailedException: Sending failed;
  nested exception is: 
	javax.mail.MessagingException: 550 5.7.3 Requested action aborted; user not authenticated

	at javax.mail.Transport.send0(Transport.java:219)
	at javax.mail.Transport.send(Transport.java:81)
	at SendEmail.main(SendEmail.java:47)
#8

السلام عليكم

انا ايضا لدى نفس المشكل

javax.mail.MessagingException: Could not connect to SMTP host: smtp.live.com, port: 25;

و هذا الكود

package testjavamail;

import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/*
 *
 * @author sahraoui
 */
public class TestJavaMail {

	public static void main(String[] args) {
    	try {
        	String host = "smtp.live.com";
        	String to = "sahraoui.dhelim@gmail.com";
        	String from = "sahraoui.joba@hotmail.com";

        	// Get system properties
        	Properties props = System.getProperties();

        	// Setup mail server
        	props.put("mail.smtp.host", "smtp.live.com");

        	// Get session
        	Session session = Session.getDefaultInstance(props, null);

        	// Define message
        	MimeMessage message = new MimeMessage(session);
        	message.setFrom(new InternetAddress(from));
        	message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
        	message.setSubject("Hello JavaMail");
        	message.setText("Welcome to JavaMail");

        	// Send message
        	Transport.send(message);

       	System.out.println("done");
    	} catch (Exception ex) {
        	Logger.getLogger(TestJavaMail.class.getName()).log(Level.SEVERE, null, ex);
    	}
	}
}
#9

لا اعتقد ان الهوتميل يسمح باستخدام البورت 25 ، ويجبرك على استخدام الSMTP Authentication في البورت 587 ، راجع هنا:

http://email.about.com/od/accessinghotmail/f/Windows_Live_Hotmail_SMTP_Settings.htm

فالأمر يعتمد على حسب اعدادات الSMTP Server ، جرب نفس الدالة في الموضوع السابق وسوف تعمل:

	   private static boolean sendingMessage(String subject, String content, String toAddress) {
		  try {
			 String host="smtp.live.com";
			 int port=587;
			 String user="myusername@hotmail.com";
			 String pass="myhotmailpassword";

			 Properties props=new Properties();
			 props.put("mail.smtp.auth", "true");
			 props.put("mail.smtp.starttls.enable", "true");

			 Session session=Session.getInstance(props);
			 Transport transport=session.getTransport("smtp");
			 transport.connect(host, port, user, pass);

			 Address[] addresses=InternetAddress.parse(toAddress);
			 Message message=new MimeMessage(session);
			 message.setFrom(new InternetAddress(user));
			 message.setRecipients(Message.RecipientType.TO, addresses);
			 message.setSubject(subject);
			 message.setText(content);

			 transport.sendMessage(message, addresses);
			 System.out.println("SEND");
			 transport.close();

			 return true;
		  }
		  catch (Exception e) {
			 e.printStackTrace();
		  }

		  return false;
	   }

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

مواضيع مشابهة