Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

Îåêßíçóå áðü ôï ìÝëïò tasos. Τελευταία δημοσίευση από το μέλος tasos στις 29-03-2010, 12:12. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-03-2010, 09:55 57861

    Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Έχω μία web εφαρμογή (CMS) και θα ήθελα να προσθέσω τη δυνατότητα αποστολής κάποιων notifications μέσω e-mail, όπως π.χ. να υπάρχει η λειτουργία "Ξέχασα τον κωδικό μου" και να στέλνει ένα e-mail με τον καινούργιο κωδικό στο e-mail του χρήστη. Αυτό που θα ήθελα είναι να μην είναι απαραίτητο να ανοίγω σε κάθε setup του CMS κάποιο email account για να χρησιμοποιώ για την αποστολή των e-mail.

    Στο google βρήκα αυτό το άρθρο, αλλά δεν κατάφερα κάτι. Πάντα είχα τον ίδιο κωδικό σφάλματος, ο οποίος σχετιζόταν με authentication. Μετά κοίταξα κάποιες libraries από το codeplex αλλά πάλι χωρίς κάποια τύχη.

    Γνωρίζετε κάποιο library ή έχετε κάποιο example που να δουλέυει;



    Τάσος Καραγιάννης

    Baby debugging steps...
  •  26-03-2010, 11:26 57863 σε απάντηση της 57861

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Το άρθρο που αναφέρεις δεν έχει καμμία σχέση με την ερώτηση σου. Δεν λέει τίποτε για το πως να στείλεις email χωρίς account, λέει πως να παρακάμψεις τα προβλήματα που είχε η αρχαία κλάση SmtpMail που είχε το .NET 1.1 όταν έτρεχε σε ... Windows Millenium.

    Για να στείλεις email στο .NET θα πρέπει να χρησιμοποιήσεις τις κλάσεις του System.Net.Mail namespace και συγκεκριμένα την SmptClient. Μπορείς να στείλεις ένα email πολύ απλά χρησιμοποιώντας την Send, π.χ

    SmtpClient client=new SmtpClient("smtp.mycompany.gr");
    client.Send("[email protected]","[email protected]","My Subject","My Email Body");		

    Θα πρέπει οπωσδήποτε όμως να δώσεις κάποια διεύθυνση "from" αν δεν θέλεις να σε κόψουν ακόμα και τα πιο απλά spam filters. Δεν είναι απαραίτητο η διεύθυνση να είναι πραγματική (πάντα), αλλά δεν μπορείς να στείλεις email με άγνωστο αποστολέα. Εξάλλου, το From δεν έχει καμμία σχέση με το authentication.

    Αν παίρνεις μήνυμα σχετικό με authentication σημαίνει ότι ο SMTP server που θέλεις να χρησιμοποιήσεις απαιτεί authentication. Αν για παράδειγμα χρησιμοποιείς Exchange, δεν θα δεχτεί να στείλει μήνυμα από άγνωστους χρήστες. Σε αυτή την περίπτωση πρέπει να χρησιμοποιήσεις το Credentials property για να δώσεις το κατάλληλο username/password, ή για ορίσεις ότι η αποστολή θα γίνει χρησιμοποιώντας το windows account που εκτελεί τον κώδικα σου, όπως παρακάτω:

    SmtpClient client=new SmtpClient("smtp.mycompany.gr");
    client.Credentials=CredentialCache.DefaultNetworkCredentials;
    client.Send("[email protected]","[email protected]","My Subject","My Email Body");	

    Θα σου πρότεινα πάντως να δημιουργείς πάντα ένα account για το CMS σου. Καταρχήν, ο Exchange μπορεί πάντα να αρνηθεί να στείλει email από άγνωστο account και ο admin του πολύ σωστά να αρνηθεί να αλλάξει τις ρυθμίσεις για χάρη σου. Επιπλέον, τυχόν απαντήσεις και μηνύματα λάθους θα χαθούν αν δεν υπάρχει διεύθυνση αποστολέα. Τέλος, θα σου κάνει τη ζωή πολύ ευκολότερη όταν θα προσπαθείς να κάνεις troubleshoot σε ειδοποιήσεις που δεν έφυγαν ή δεν έφτασαν λόγω προβλημάτων στο email.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  26-03-2010, 12:20 57864 σε απάντηση της 57863

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Ok λοιπόν, ας ξεχάσουμε το άρθρο.

    Κάνοντας αυτό που αναφέρεις έχω το εξής μήνυμα: Transaction failed. The server response was: 5.7.1 <[email protected]>: Sender address rejected: Access denied. Δίνω πάντα μία from διεύθυνση, απλά δεν είναι πραγματική (δηλαδή δεν έχω ανοίξει το noreply account από το cpanel). Ο mail server είναι από τον hosting provider που κάνει κ hosting το site. Δεν νομίζω να είναι exchange.

    Δεν με ενδιαφέρει να λαμβάνω απαντήσεις στο συγκεκριμένο email, αλλιώς όντως θα άνοιγα ένα account. Απλά να μπορώ να στείλω ένα email όταν ένας χρήστης έχει ζητήσει password recovery. Τα email δεν θα είναι πολλά, όταν κ αν χρειαστεί. Π.χ. το wordpress έχει την αντίστοιχη λειτουργία με την phpmail. Εγώ ψάχνω κάτι αντίστοιχο στον IIS και στο .NET. Αναφέρω το wordpress επειδή έτσι ακριβώς μου έχει ζητηθεί.

    Αν όντως αυτό που ζητάω δεν γίνεται, έχει να κάνει με τον IIS που δεν προσφέρει κάποια αντίστοιχη λειτουργία ή έχει κάποιους επιπλέον περιορισμούς;
    Υπάρχει κάποιο workaround που μπορώ να κάνω;



    Τάσος Καραγιάννης

    Baby debugging steps...
  •  26-03-2010, 13:01 57868 σε απάντηση της 57864

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Μου φαίνεται ότι δεν προσέχεις τα μηνύματα που σου δίνει ο server. Το Sender address rejected σημαίνει ότι ο SMTP του HOST αρνείται να στείλει email για άγνωστο account. Δεν έχει τίποτε να κάνει με IIS, .ΝΕΤ, Wordpress, phpmail. Ο συγκεκριμένος SMTP server θα αρνηθεί σε όλους να στείλει με τον ίδιο ακριβώς τρόπο.

    Υπάρχουν διάφοροι λόγοι για τους οποίους ένας SMTP server αρνείται να στείλει για ένα συγκεκριμένο sender και οι περισσότεροι έχουν να κάνουν με την αντιμετώπιση του spam:

    • Καταρχήν, ένας SMTP αρνείται να στείλει όταν ο αποστολέας δεν ανήκει σε κάποιο domain που χειρίζεται ο SMTP. Δεν μπορώ  εγώ π.χ. να χρησιμοποιήσω τον SMTP του Google για να στείλω ως κατιτί@microsoft.com.
    • Μπορεί ο συγκεκριμένος server να αρνείται να στείλει για άγνωστο account.
    • Μπορεί o server να απαιτεί authentication πριν στείλεις email.

    Ο host σου θα σου πει πως μπορείς να στείλεις email και τί ρυθμίσεις χρειάζονται. Λογικά θα πρέπει ήδη να έχει οδηγίες στο help ή troubleshooting guide του.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  26-03-2010, 13:30 57869 σε απάντηση της 57868

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Συνήθως (στατιστικά τουλάχιστον) αυτό που συμβαίνει είναι ότι ο smtp server του provider ζητάει authentication. Αρα, θα πρέπει να υπάρχει κάποιο email account με το password του μεσω του οποίου θα πρέπει να συνδεθείς στον smtp server του provider σου (το email account αυτό δεν είναι απαραίτητα αυτό από το οποίο θα στείλεις το mail, απλά για το authentication χρειάζεται). 

    Οπως λέει και ο Παναγιώτης, θα πρέπει να επικοινωνήσεις με τον host και να ζητήσεις περισσότερες πληροφορίες.





    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  26-03-2010, 17:17 57874 σε απάντηση της 57869

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Δυστυχώς ο host μου έχει κάποια παραδείγματα αλλά μου δίνουν κάτι ωραιότατα "Security Exception". Τα παραδείγματα που βρήκα στο help τους αφορούσαν τη δημιουργία CDONTS και CDO.Message objects. Το chat μαζί τους δεν κατέληξε κάπου, έπρεπε να κλείσουμε λόγω ώρας.

    Η ερώτηση μου ήταν πιο γενική πάντως. Από ότι καταλαβαίνω, το αν μπορώ να το καταφέρω εξαρτάται κυρίως από τον smtp server που χρησιμοποιώ. 

    Ευχαριστώ για τις απαντήσεις σας. 



    Τάσος Καραγιάννης

    Baby debugging steps...
  •  29-03-2010, 10:15 57889 σε απάντηση της 57874

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Τελικά κατάφερα να στείλω το αυτοματοποιημένο email με τη χρήση της System.Net.Mail, ορίζοντας σαν SMTP server τον localhost. Το e-mail βέβαια χαρακτηρίστηκε σαν spam τις περισσότερες περιπτώσεις, οπότε είναι καλύτερα να υπάρχει κάποιος smtp account για αυτή τη δουλειά.


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  29-03-2010, 11:15 57890 σε απάντηση της 57889

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Music I won't say I told you so! Music

    Θα πρέπει να έχεις πάντα υπόψη σου όταν στέλνεις email ότι αν μοιάζει με spam, θα μπλοκαριστεί σίγουρα.

    Αν λες ότι έστειλες email μέσω του localhost σημαίνει ότι το SMTP service του IIS τρέχει ήδη στο site σου, ή μάλλον, στον IIS που κάνει host το site σου. Έχει μεν πολύ λιγότερους ελέγχους απ' ότι κάποιος κανονικός mail server, αλλά όπως είδες το πρόβλημα είναι ότι το email δεν θα φτάσει στους παραλήπτες σου αν λείπει ο αποστολέας.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-03-2010, 11:40 57891 σε απάντηση της 57890

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Δεν φταίει μόνο ότι μπορεί να λείπει ο αποστολέας αλλά κι ότι τις περισσότερες φορές ο SMTP του IIS δεν έχει FQN ορισμένο στα settings του (ειδικά σε shared περιβάλλοντα), κι έτσι flaggarese κατευθείαν για spam ότι κι εάν κάνεις.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  29-03-2010, 12:12 57892 σε απάντηση της 57890

    Απ: Αποστολή email χωρίς τη χρήση συγκεκριμένου e-mail account

    Θα περίμενα να μην είναι πρόβλημα ο άγνωστος αποστολέας, με δεδομένο ότι το e-mail φεύγει από τον σωστό mail server. Αλλά έκανα λάθος. Όπως κ να έχει, τις απαντήσεις που ήθελα τις βρήκα. Smile

    Thanks a lot!

    Τάσος Καραγιάννης

    Baby debugging steps...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems