Προς το περιεχόμενο

e-mail send χρησιμοποιώντας visual studio 2008


karabouzouk...

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε κάποιο σημείο της ιστοσελίδας μου χριάζεται να έχω μια φόρμα που να μπορώ να στέλνω e-mail...

Ο κώδικας που χρησιμοποιώ είναι ο εξής σε C#:

>   using System.Web.Mail;  (αυτό το έβαλα στην αρχή μαζί με τις άλλες δηλώσεις)
protected void Button1_Click(object sender, EventArgs e)
   {
       MailMessage MyMail = new MailMessage();
       MyMail.From = TextBox4.Text;
       MyMail.To = "[email protected]";
       MyMail.Subject = "Book_store_contactUs";
       MyMail.Body = TextBox5.Text;
       SmtpMail.SmtpServer = "smtp.mail.yahoo.com";
       SmtpMail.Send(MyMail);
   }

 

 

και το σφάλμα που μου εμφανίζει ο brouser είναι το εξής:

>Server Error in '/WebSite4' Application.

C aeayeoioc oio a?iooieYa a?inn?oecea a?u oi aeaeiieoo?. C aioa?ueneoc oio aeaeiieoo? ?oai: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Runtime.InteropServices.COMException: C aeayeoioc oio a?iooieYa a?inn?oecea a?u oi aeaeiieoo?. C aioa?ueneoc oio aeaeiieoo? ?oai: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html


Source Error: 


Line 33:         //MyMail.UrlContentLocation = sUrlContentLocation;
Line 34:         SmtpMail.SmtpServer = "smtp.mail.yahoo.com.cn";
Line 35:         SmtpMail.Send(MyMail);
Line 36:     }
Line 37:     protected void Button2_Click(object sender, EventArgs e)

Source File: c:\Documents and Settings\Jerry\Τα έγγραφά μου\Visual Studio 2008\WebSites\WebSite4\Contact_Us.aspx.cs    Line: 35 

Stack Trace: 


[COMException (0x8004020e): C aeayeoioc oio a?iooieYa a?inn?oecea a?u oi aeaeiieoo?. C aioa?ueneoc oio aeaeiieoo? ?oai: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html
]

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
  System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) +0
  System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) +337
  System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture) +36
  System.Web.Mail.LateBoundAccessHelper.CallMethod(Type type, Object obj, String methodName, Object[] args) +66
  System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) +49

[HttpException (0x80004005): C aeayeoioc oio a?iooieYa a?inn?oecea a?u oi aeaeiieoo?. C aioa?ueneoc oio aeaeiieoo? ?oai: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html
]
  System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) +99
  System.Web.Mail.CdoSysHelper.Send(MailMessage message) +1738
  System.Web.Mail.SmtpMail.Send(MailMessage message) +351
  Contact_Us.Button1_Click(Object sender, EventArgs e) in c:\Documents and Settings\Jerry\Τα έγγραφά μου\Visual Studio 2008\WebSites\WebSite4\Contact_Us.aspx.cs:35
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

 

Στο configuration της ιστοσελίδας (web.config) έχω γράψει επίσης:

<compilation debug="true">

μέσα στο <system.web>

όπως είδα σε κάποια παραδείγματα καθώς έψαχνα αλλά τίποτα..

 

Αν ξέρει κάποιος πιο "παλιός" και έμπειρος τι μπορεί να παίζει ή πως να το αντιμετωπίσω ας με βοηθήσει...

Ευχαριστώ

Δημοσ.

Καταρχήν προσπάθησε να κάνεις τα μηνύματα λάθους να εμφανίζονται σωστά και όχι κινέζικα (αλλάζοντας κωδικοποίηση ίσως?) και κατά δεύτερον δοκίμασε να εγκαταστήσεις ένα smtp server στο pc σου (κυκλοφορούν δωρεάν διάφοροι πολύ απλοί στη χρήση) και βάλε να στέλνονται μέσω αυτού γιατί δε ξέρω αν επιτρέπει ο smtp του yahoo να στέλνεις ανώνυμα (χωρίς πιστοποίηση) e-mail .

Δημοσ.
Καταρχήν προσπάθησε να κάνεις τα μηνύματα λάθους να εμφανίζονται σωστά και όχι κινέζικα (αλλάζοντας κωδικοποίηση ίσως?) και κατά δεύτερον δοκίμασε να εγκαταστήσεις ένα smtp server στο pc σου (κυκλοφορούν δωρεάν διάφοροι πολύ απλοί στη χρήση) και βάλε να στέλνονται μέσω αυτού γιατί δε ξέρω αν επιτρέπει ο smtp του yahoo να στέλνεις ανώνυμα (χωρίς πιστοποίηση) e-mail .

 

Τα μηνύματα δεν κατάφερα να τα κάνω να εμφανίζονται όσο κι αν προσπάθησα με τις κωδικοποιήσεις.. Παλιότερα από στη C είχα καταφέρει να στέλνω e-mail με ένα απλό προγραμματάκι με παρόμοιο κώδικα με αυτόν, μόνο που θυμάμαι όριζα και username και password ενώ εδώ όχι... τέλος πάντων μάλλον αυτό με την αυθεντικοποίηση θα φταίει..

Αν σκεφτείς καμιά άλλη λύση από τον smtp server πες μου γιατί δεν ψάχνω κάτι τέτοιο..

ευχαριστώ για την απάντηση

Δημοσ.

Δεν έχω ιδέα απο C# αλλά για να στίλεις e-mail πρέπει να το στίλεις μέσω smtp χρησιμοποιώντας πιστοποίηση ssl και αυθεντικοποίηση. Το γράφει και στο μήνυμα που παρέθεσες άλλωστε:

Server Error in '/WebSite4' Application.

 

C aeayeoioc oio a?iooieYa a?inn?oecea a?u oi aeaeiieoo?. C aioa?ueneoc oio aeaeiieoo? ?oai: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

 

Για ρίξε μια ματιά στα παρακάτω link για να δεις αν μπορείς να βγάλεις άκρη:

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/a6a0f0b1-c873-4c89-97dd-bae85dfe749d

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/28b5a576-0da2-42c9-8de3-f2bd1f30ded4

Δημοσ.

Σου παραθέτω κώδικα για αποστολή e-mail ο οποίος δουλεύει. Δοκίμασε με αυτόν αν θέλεις

 

>
Imports System.Net.Mail

Sub SendEmail()
       Dim _MailServer, _AccountUser, _AccountPass, _EmailSubject, _EmailBody, _Recipient As String

       _MailServer = "mail.xxxxxxx.gr"
       _AccountUser = "[email protected]"
       _AccountPass = "xxxxxxx"
       _EmailSubject = "Μήνυμα από φόρμα επικοινωνίας xxxxxxx.gr"
       _Recipient = "[email protected]"
       _EmailBody = "......"

       Dim mailClient As New SmtpClient(_MailServer)
       mailClient.DeliveryMethod = SmtpDeliveryMethod.Network
       mailClient.Credentials = New System.Net.NetworkCredential(_AccountUser, _AccountPass)
       Dim fromAddress As String = _AccountUser
       Dim toAddress As String = _Recipient
       Dim subject As String = _EmailSubject
       Dim body As String = _EmailBody
       mailClient.Send(New MailMessage(fromAddress, toAddress, subject, body))
End Sub

 

Εδώ ο κώδικας θέλει authentication, απλά θα πρέπει να βρεις να δώσεις τις σωστές τιμές, smtp server, account, pass.

 

Edit: Η System.Web.Mail θεωρείται deprecated και προτείνεται η χρήστη της System.Net.Mail.

Δημοσ.
Σου παραθέτω κώδικα για αποστολή e-mail ο οποίος δουλεύει. Δοκίμασε με αυτόν αν θέλεις

 

>
Imports System.Net.Mail

Sub SendEmail()
       Dim _MailServer, _AccountUser, _AccountPass, _EmailSubject, _EmailBody, _Recipient As String

       _MailServer = "mail.xxxxxxx.gr"
       _AccountUser = "[email protected]"
       _AccountPass = "xxxxxxx"
       _EmailSubject = "Μήνυμα από φόρμα επικοινωνίας xxxxxxx.gr"
       _Recipient = "[email protected]"
       _EmailBody = "......"

       Dim mailClient As New SmtpClient(_MailServer)
       mailClient.DeliveryMethod = SmtpDeliveryMethod.Network
       mailClient.Credentials = New System.Net.NetworkCredential(_AccountUser, _AccountPass)
       Dim fromAddress As String = _AccountUser
       Dim toAddress As String = _Recipient
       Dim subject As String = _EmailSubject
       Dim body As String = _EmailBody
       mailClient.Send(New MailMessage(fromAddress, toAddress, subject, body))
End Sub

 

Εδώ ο κώδικας θέλει authentication, απλά θα πρέπει να βρεις να δώσεις τις σωστές τιμές, smtp server, account, pass.

 

Edit: Η System.Web.Mail θεωρείται deprecated και προτείνεται η χρήστη της System.Net.Mail.

 

Θα με βοηθούσες αφάνταστα αν μου έβρισκες τον ίδιο κώδικα σε C#.. Θα το παλέψω και μόνος αλλά αν τον έχεις πρόχειρο βάλλε τον εδώ..!

ευχαριστώ

 

 

edit:

Τον έφτιαξα τον κώδικα σε C# για όποιον τον χρειάζεται:

>using System.Net.Mail;


       SmtpClient smtpCl = new SmtpClient("smtp.mail.yahoo.com");
       smtpCl.DeliveryMethod = SmtpDeliveryMethod.Network;
       smtpCl.Credentials = new System.Net.NetworkCredential("[email protected]", "pass");
       MailMessage mailmsg = new MailMessage();
       mailmsg.From = new MailAddress("[email protected]");
       mailmsg.To.Add(new MailAddress("[email protected]"));
       mailmsg.To.Add(new MailAddress("[email protected]"));
       mailmsg.Subject = "thema e-mail";
       mailmsg.Body = "e-mail body";
       smtpCl.Send(mailmsg);

Δημοσ.

Το να μπορείς να στείλεις email σε μια web εφαρμογή, έχει πάντα να κάνει με τον IIS host που είναι η εφαρμογή αυτή.

Επίσης δεν μπορείς αυθαίρετα να επιλέγεις έναν mailserver στο internet και θα το κάνει απαραίτητα αν ο smpt server αυτός δεν έχει ανοιχτές συνδέσεις εκτός του δικού του domain.

 

Επίσης ο IIS host μπορεί να μην υποστηρίσει καν web.mail αλλά την net.mail, μιας και το web.mail είναι πλέον απαρχαιομένη τεχνολογία και πιθανόν ήδη να σου βγάζει warning στο IDE.

 

Στην περίπτωσή σου, προσπαθείς από τον δικό σου υπολογιστή να στείλεις ένα email μέσω του smtp.yahoo.com κάπου αλλού. ΦΥΣΙΚΑ και δεν θα δουλέψει γιατί με τον ίδιο ακριβώς τρόπο παίζουν τα spam email τα οποία οι εταιρίες κόβουν εδώ και χρόνια. Πιθανόν να χρειαστείς SSL σύνδεση με τον host και μετά να στείλει το email, ΑΝ ο SMTP θεωρήσει ότι μπορείς να το κάνεις εκτός του δικού του domain.

Δημοσ.

Αν ο SMTP server που χρησιμοποιείς, υποστηρίζει την αποστολή email με authentication χωρίς να βρίσκεται locally η web εφαρμογή σου τότε είσαι οκ. Αυτό έχει να κάνει με τον SMTP server και όχι με τον IIS. Μπορείς να στείλεις email και από τον τοπικό σου IIS, και από desktop εφαρμογή, εφόσον ο SMTP που θα χρησιμοποιήσεις το επιτρέπει. Ο SMTP server μπορεί να είναι αλλά και να μην είναι component του IIS. Αυτό δεν επηρεάζει καθόλου τη σωστή εκτέλεση του κώδικα.

 

Δεν γίνεται ο IIS να μην υποστηρίζει τη βιβλιοθήκη System.Web.Mail αφού είναι component του .NET framework. Η microsoft την όρισε deprecated και αυτό είναι κάτι που μας το λέει το Visual Studio αλλά υποστηρίζεται εγγενώς, για να υπάρχει backward compatibility.

Δημοσ.
Αν ο SMTP server που χρησιμοποιείς, υποστηρίζει την αποστολή email με authentication χωρίς να βρίσκεται locally η web εφαρμογή σου τότε είσαι οκ. Αυτό έχει να κάνει με τον SMTP server και όχι με τον IIS. Μπορείς να στείλεις email και από τον τοπικό σου IIS, και από desktop εφαρμογή, εφόσον ο SMTP που θα χρησιμοποιήσεις το επιτρέπει. Ο SMTP server μπορεί να είναι αλλά και να μην είναι component του IIS. Αυτό δεν επηρεάζει καθόλου τη σωστή εκτέλεση του κώδικα.

 

Δεν γίνεται ο IIS να μην υποστηρίζει τη βιβλιοθήκη System.Web.Mail αφού είναι component του .NET framework. Η microsoft την όρισε deprecated και αυτό είναι κάτι που μας το λέει το Visual Studio αλλά υποστηρίζεται εγγενώς, για να υπάρχει backward compatibility.

 

Δύσκολο να βρεις SMTP που να είναι ξεκλείδωτος για να στέλνει email ο οποιοσδήποτε. Στην συγκεκριμένη περίπτωση προσπαθεί να στείλει μέσω του yahoo!!!

 

Πολλοί hosts δεν επιτρέπουν την επιστολή email εκτός domain τους. Και δεν αναφέρομαι στο IIS το οποίο φτιάχνεις εσύ στο server ή στο PC. Αναφέρομαι σε εταιρίες IIS hosting.

 

Όσον αφορά το System.Web.Mail φυσικα και δουλεύει, αλλά θα του έχει ήδη βγάλει τουλάχιστον 4 Warnings μιας και δεν υποστηρίζεται πλέον. Δεν είναι δα τόσο δύσκολο να χρησιμοποιεί σε μια νέα εφαρμογή το νέο τρόπο.

 

Καλή νοοτροπία είναι να μην έχουμε warnings όταν γράφουμε μια εφαρμογή. Επειδή δουλεύει, δεν σημαίνει ότι είναι και ΟΚ.

Δημοσ.
Όσον αφορά το System.Web.Mail φυσικα και δουλεύει, αλλά θα του έχει ήδη βγάλει τουλάχιστον 4 Warnings μιας και δεν υποστηρίζεται πλέον. Δεν είναι δα τόσο δύσκολο να χρησιμοποιεί σε μια νέα εφαρμογή το νέο τρόπο.

 

Στο προηγούμενο post σου γράφεις ότι μπορεί κ να μην το υποστηρίζει. Θα μπορούσε κάποιος να νομίσει ότι δεν στέλνεται το email επειδή δεν υποστηρίζεται το Namespace αυτό. Ειδικά κάποιος που είναι νέος προγραμματιστής.

 

Επίσης το άλλο μου σχόλιο είναι ότι ο IIS web server και ο IIS SMTP server είναι δύο διαφορετικά services. Αν πέσει το ένα, το άλλο δεν επηρεάζεται. Υπάρχουν κ hosting όπου ο smtp server (μόνο) δεν είναι σε windows περιβάλλον. Συνήθως όμως, ειδικά σε φθηνά hosting είναι όντως lockαρισμένος ο SMTP server για αποστολή έξω από το domain. Αλλά αν αυτός είναι ο κώδικας για τη φόρμα επικοινωνίας στο site σου, είσαι Ok.

 

Τώρα αν μπορείς να το κάνεις από yahoo, δεν έχω την παραμικρή ιδέα.

Επισκέπτης
Δημοσ.

Απλα κανε ενα gmail λογαριασμο μεσω του smtp του θα στελνεις τα μηνυματα και πες τους χρηστες να γραφουν στο textbox5.text το όνομά τους.

 

 

Sent from my iPod touch using Insomnia.app

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...