2008-12-14 24 views
6

यह कोड मैंने लिखा है:मैं अपने सी # एप्लिकेशन से एक ईमेल संदेश कैसे भेजूं?

  MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 

     mail.Subject = "This is a test!!"; 
     mail.Body = "testing..."; 

     SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect); 
     System.Console.WriteLine("Access? " + connectAccess.Access); 

     SmtpClient client = new SmtpClient("mail.myurl.com", 2525); 
     client.Send(mail); 

यह काम नहीं कर रहा है। मुझे "क्लाइंट.एंड (मेल)" पंक्ति में एक अपवाद मिलता है जो कहता है "मेलबॉक्स अनुपलब्ध है। सर्वर प्रतिक्रिया थी (MYLOCALCOMPUTERNAME) [मेरा स्थानीय आईपी]: 3045 वर्तमान में रिले करने की अनुमति नहीं है।"

connectAccess.Access "कनेक्ट" वापस लौटाता है (मुझे यकीन नहीं है कि यह आवश्यक था ... मैंने समस्या निवारण प्रक्रिया शुरू करने के लिए इसे जोड़ा।)

क्या इसका मतलब यह है कि मेरी स्थानीय मशीन होना चाहिए किसी तरह से कॉन्फ़िगर किया गया? जब मैं अपने ऐप को अन्य लोगों मशीनों पर तैनात करता हूं तो क्या होगा? वहां स्थानीय विन्यास होने की आवश्यकता होगी? मैं बस अपने आवेदन से "फीडबैक भेजें" लिंक बनाने के लिए देख रहा हूं।

(नोट: मेरे असली एप्लिकेशन में मैं अपने वास्तविक ईमेल पते का उपयोग "टू" और "से" दोनों में कर रहा हूं और मेरा smtp वास्तव में मेरे यूआरएल/वेबसाइट को होस्ट करने वाले स्थान पर मेरा smtp पता है

धन्यवाद!

-Adeena

उत्तर

3

आपके एसएमटीपी सर्वर के रूप में ही मेजबान पर गंतव्य पता है? यदि नहीं, तो यह एक रिलेइंग त्रुटि की व्याख्या करेगा।

आपके द्वारा उपयोग किए जाने वाले SMTP सर्वर को मेल संदेश का अंतिम गंतव्य या मेल एक्सचेंज में पहली हॉप होने की आवश्यकता है। उदाहरण के लिए, यदि आप किसी जीमेल पते से याहू पते पर मेल भेज रहे हैं, तो संदेश देखने के लिए पहला मेल सर्वर आपका जीमेल सर्वर, या याहू सर्वर होना चाहिए। बीच में सर्वर संदेश को अस्वीकार कर देंगे क्योंकि उनके पास रिलेइंग अक्षम है (स्पैम पर कटौती करने के लिए, आदि)।

यदि वे एक ही मेजबान हैं, तो क्या आप इसे सीधे किसी अन्य तरीके से मेल भेज सकते हैं?

अगर आपके एसएमटीपी सर्वर ठीक से बर्ताव कर रही है को देखने के लिए टेलनेट के माध्यम से इस परीक्षण का प्रयास करें: http://www.messagingtalk.org/content/470.html

7

@ माइकल: लिंक के लिए धन्यवाद। यह बहुत उपयोगी है।

I सोचें मुझे मेरी समस्या का पता चला। मेरे "क्लाइंट" ऑब्जेक्ट को बनाने के बाद मुझे लॉगिन प्रमाण-पत्र जोड़ने की आवश्यकता थी। मैं निम्न पंक्ति कहा:

client.Credentials = new System.Net.NetworkCredential("myloginat+myurl.com", "mypassword"); 

(खेद है - मैं इस आदत उसके बाद मैं वेब पर और 2 घंटे के लिए मेरे मैनुअल के माध्यम से एक जवाब के लिए खोज, मैं अंत में नीचे 5 मिनट तोड़ने के लिए और प्रश्न पोस्ट और उसके बाद है बाद में इसे समझें। :) मुझे लगता है कि प्रश्न लिखने का कार्य मुझे किसी और चीज से ज्यादा मदद करता है)

तो यह काम कर रहा है ... हालांकि मैं दावा नहीं करूंगा कि मैं सब कुछ समझता हूं कि यह कैसे और क्यों काम कर रहा है। कुछ समस्याओं में भाग लेने की उम्मीद है क्योंकि मैं दूसरों को अपना प्रोग्राम उपयोग करने के लिए देता हूं। यानी, क्या हर कोई ऐसे प्रोग्राम का उपयोग करेगा जिसमें इंटरनेट कनेक्शन है, मेरे सर्वर पर यह एसएमटीपी कनेक्शन खोलने में सक्षम होगा? मुझे इसका जवाब नहीं पता ... मुझे इंतजार करना, देखना और कुछ और सीखना होगा।

धन्यवाद! :)

-एडेना

+0

कुछ एसएमटीपी सर्वरों को उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है - जो आपने बदल दिया और समस्या हल की। कई एसएमटीपी सर्वर, उदाहरण के लिए मेरे आईएसपी, पासवर्ड की आवश्यकता नहीं है क्योंकि वे मूल आईपी को अपने आईएसपी के सबज़ोन से आने के रूप में पहचानते हैं। – configurator

0

अपनी फ़ायरवॉल की जांच करें। क्या 2525 पोस्ट खुला है?

0
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net; 
using System.Net.Mail; 

namespace SendMail 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       SmtpClient client = new SmtpClient("smtp.gmail.com", 25); 
       MailMessage msg = new MailMessage(); 

       NetworkCredential cred = new NetworkCredential("[email protected]", "password"); 
       msg.From = new MailAddress("[email protected]"); 
       msg.To.Add("[email protected]"); 
       msg.Subject = "A subject"; 
       msg.Body = "Hello,Raffi"; 

       client.Credentials = cred; 
       client.EnableSsl = true; 
       label1.Text = "Mail Sended Succesfully"; 
       client.Send(msg); 


      } 
      catch 
      { 
       label1.Text = "Error"; 
      } 
     } 



    } 
}