Εργασία με e-mail. Αποστολή email μέσω προγραμματισμού χρησιμοποιώντας διάφορες υπηρεσίες Αποστολή μηνύματος στο mail c

Διοικητής πλοίου 14 Οκτωβρίου 2013 στις 07:29 μ.μ

Αποστολή email μέσω προγραμματισμού με χρήση διάφορες υπηρεσίες

  • .ΚΑΘΑΡΑ,

Πολύ συχνά πρέπει να ασχοληθείς με την αποστολή emailαπό τον κωδικό του προγράμματος. Δεν χρειάζεται να πάτε μακριά για παραδείγματα.

Αυτό το άρθρο είναι μια υπόδειξη και δεν αποκαλύπτει τίποτα καινούργιο, αλλά πριν το γράψω, κοίταξα κάτι παρόμοιο στο Διαδίκτυο και ήμουν μάλλον έκπληκτος που σχεδόν παντού προσφέρουν είτε μια μη λειτουργική ή ξεπερασμένη λύση, είτε είναι απλά γραμμένο αναλφάβητα.

Το πρώτο πράγμα που δεν πρέπει να κάνετε με αυτά τα παραδείγματα είναι να χρησιμοποιήσετε το System.Web.Mail, το οποίο έχει καταργηθεί για μεγάλο χρονικό διάστημα και ξεκινώντας με Visual Studio 2010, δεν μπορείτε καν να προσθέσετε τη βιβλιοθήκη System.Web χωρίς να γνωρίζετε την πλήρη διαδρομή στο αντίστοιχο DLL.
Αντ 'αυτού, προτείνεται να χρησιμοποιήσετε τη βιβλιοθήκη System.Net.
χρησιμοποιώντας System.Net? χρησιμοποιώντας System.Net.Mail.
Έτσι, το πιο απλό, είναι το πιο σημαντικό και συχνά χρησιμοποιείται είναι η αποστολή ενός γράμματος από το δικό σας διακομιστής αλληλογραφίαςστο οποίο έχει διαμορφωθεί το πρόγραμμα -πελάτης SMTP. Όπως καταλαβαίνετε, ο διακομιστής μπορεί να είναι είτε αυτός στον οποίο εκτελείται η εφαρμογή, είτε ένας απομακρυσμένος, στον οποίο έχετε το δικαίωμα να στείλετε γράμματα χωρίς πρόσθετη εξουσιοδότηση.

Δείγμα κώδικα για αποστολή επιστολής από τοπικό μηχάνημα:
", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = new SmtpClient (" 127.0.0.1 ")) (// Η διεύθυνση πρέπει να είναι εδώ διακομιστής αλληλογραφίας και θύρα αν απαιτείται sc. Αποστολή (mm);))

Χρησιμοποιώντας ταχυδρομικές υπηρεσίεςόπως το Gmail, το Yandex, το Mail.ru κ.λπ. όλα είναι ίδια, προστίθενται μόνο παράμετροι με εξουσιοδότηση.

Διακομιστής SMTP: smtp.gmail.com
Λιμάνι: 587
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.gmail.com ", 587)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," GmailPassword "); sc. Αποστολή (mm);))

Διακομιστής SMTP: smtp.yandex.ru
Λιμάνι: 25
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.yandex.ru ", 25)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," YandexPassword "); sc. Αποστολή (mm);))

Διακομιστής SMTP: smtp.mail.ru
Λιμάνι: 25
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.mail.ru ", 25)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," MailRuPassword "); sc. Αποστολή (mm);))
Εάν έχετε γραμματοκιβώτιοστην υπηρεσία mail.ru τελειώνει με inbox.ru, list.ru ή bk.ru, στη συνέχεια η διεύθυνση του διακομιστή SMTP (smtp.inbox.ru, smtp.list.ru και smtp.bk.ru) αλλάζει ανάλογα.

Όπως μπορείτε να δείτε, για να χρησιμοποιήσετε οποιαδήποτε άλλη υπηρεσία αλληλογραφίας στα προγράμματά σας, χρειάζεται μόνο να μάθετε τη διεύθυνση και τη θύρα διακομιστή SMTP, καθώς και τους κανόνες εξουσιοδότησης.

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

Ετικέτες: email, αποστολή email, smtp

Μία από τις πιο απαιτητικές λειτουργίες στον ιστότοπο είναι η αίτηση ή η φόρμα παραγγελίας, τα δεδομένα από τα οποία αποστέλλονται μέσω ταχυδρομείου στον κάτοχο του ιστότοπου. Κατά κανόνα, αυτές οι φόρμες είναι απλές και αποτελούνται από δύο ή τρία πεδία εισαγωγής δεδομένων. Πώς δημιουργείτε μια τέτοια φόρμα παραγγελίας; Αυτό θα απαιτήσει τη χρήση της γλώσσας Σήμανση HTMLκαι τη γλώσσα προγραμματισμού PHP.

Η ίδια η γλώσσα σήμανσης HTML είναι απλή, απλά πρέπει να καταλάβετε πώς και πού να τοποθετήσετε συγκεκριμένες ετικέτες. Με τη γλώσσα προγραμματισμού PHP, τα πράγματα είναι λίγο πιο περίπλοκα.

Δεν θα είναι δύσκολο για έναν προγραμματιστή να δημιουργήσει μια τέτοια φόρμα, αλλά ένας κωδικοποιητής HTML μπορεί να δυσκολευτεί κάποιες ενέργειες.

Δημιουργήστε μια φόρμα για την υποβολή δεδομένων σε html

Η πρώτη γραμμή θα είναι η επόμενη

Αυτό είναι ένα πολύ σημαντικό στοιχείο της φόρμας. Σε αυτό, υποδεικνύουμε με ποιον τρόπο θα μεταφερθούν τα δεδομένα και σε ποιο αρχείο. Σε αυτήν την περίπτωση, όλα αποστέλλονται με τη μέθοδο POST στο αρχείο send.php. Το πρόγραμμα σε αυτό το αρχείο, αντίστοιχα, πρέπει να αποδεχτεί τα δεδομένα, θα περιέχονται στον πίνακα ανάρτησης και θα τα στείλει στην καθορισμένη διεύθυνση ηλεκτρονικού ταχυδρομείου.

Ας επιστρέψουμε στη φόρμα. Η δεύτερη γραμμή θα περιέχει ένα πεδίο για την εισαγωγή του πλήρους ονόματός σας. Έχει τον ακόλουθο κώδικα:

Ο τύπος φόρμας είναι κείμενο, δηλαδή ο χρήστης μπορεί να εισαγάγει ή να αντιγράψει κείμενο εδώ από το πληκτρολόγιο. Η παράμετρος ονόματος περιέχει το όνομα της φόρμας. Σε αυτήν την περίπτωση, αυτό είναι fio, με αυτό το όνομα θα μεταδοθούν όλα όσα εισήγαγε ο χρήστης σε αυτό το πεδίο. Η παράμετρος κράτησης θέσης καθορίζει τι θα γραφτεί σε αυτό το πεδίο ως επεξήγηση.

Η επόμενη γραμμή:

Εδώ, σχεδόν όλα είναι τα ίδια, αλλά το όνομα του πεδίου είναι email και η εξήγηση υποδεικνύει ότι ο χρήστης πρέπει να εισαγάγει τη διεύθυνση email του σε αυτήν τη φόρμα.

Η επόμενη γραμμή θα είναι το κουμπί "υποβολή":

Και η τελευταία γραμμή στη φόρμα θα είναι η ετικέτα

Τώρα ας τα βάλουμε όλα μαζί.





Τώρα θα κάνουμε υποχρεωτικά τα πεδία της φόρμας. Έχουμε τον ακόλουθο κώδικα:





Δημιουργήστε ένα αρχείο που δέχεται δεδομένα από μια φόρμα HTML

Αυτό θα είναι ένα αρχείο με το όνομα send.php

Στο αρχείο, στο πρώτο στάδιο, πρέπει να αποδεχτείτε δεδομένα από τον πίνακα ανάρτησης. Για να γίνει αυτό, δημιουργούμε δύο μεταβλητές:

$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];

Τα ονόματα μεταβλητών PHP προηγούνται με ένα σύμβολο $ και ένα ερωτηματικό στο τέλος κάθε γραμμής. $ _POST είναι ένας πίνακας στον οποίο μεταφέρονται τα δεδομένα από τη φόρμα. Στη μορφή html, η μέθοδος υποβολής καθορίζεται ως μέθοδος = "δημοσίευση". Έτσι, δύο μεταβλητές λαμβάνονται από html φόρμες... Για την προστασία του ιστότοπού σας, πρέπει να περάσετε αυτές τις μεταβλητές μέσω πολλών φίλτρων - συναρτήσεις php.

Η πρώτη συνάρτηση μετατρέπει όλους τους χαρακτήρες που ο χρήστης προσπαθεί να προσθέσει στη φόρμα:

Σε αυτή την περίπτωση, δεν δημιουργούνται νέες μεταβλητές στο php, αλλά χρησιμοποιούνται υπάρχουσες. Αυτό που θα κάνει το φίλτρο είναι η μετατροπή του χαρακτήρα "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

Η δεύτερη συνάρτηση αποκωδικοποιεί το url εάν ο χρήστης προσπαθήσει να το προσθέσει στη φόρμα.

$ fio = urldecode ($ fio);
$ email = urldecode ($ email);

Στην τρίτη συνάρτηση, θα αφαιρέσουμε κενά από την αρχή και το τέλος της συμβολοσειράς, εάν υπάρχουν:

$ fio = περικοπή ($ fio);
$ email = trim ($ email);

Υπάρχουν και άλλες λειτουργίες για το φιλτράρισμα μεταβλητών php επίσης. Η χρήση τους εξαρτάται από το πόσο φοβάστε ότι ένας εισβολέας θα προσπαθήσει να προσθέσει κώδικα σε αυτήν τη μορφή αποστολής δεδομένων σε αλληλογραφία html.

Επικύρωση δεδομένων που μεταφέρθηκαν από τη φόρμα HTML σε αρχείο PHP

Για να ελέγξετε αν αυτός ο κώδικας λειτουργεί, εάν τα δεδομένα μεταδίδονται, μπορείτε απλά να τον εμφανίσετε στην οθόνη χρησιμοποιώντας τη λειτουργία ηχώ:

echo $ fio?
ηχώ "
";
echo $ email?

Η δεύτερη γραμμή είναι εδώ για να χωρίσει την έξοδο των μεταβλητών php σε διαφορετικές γραμμές.

Αποστολή των ληφθέντων δεδομένων από τη φόρμα HTML σε αλληλογραφία μέσω PHP

Για να στείλετε δεδομένα σε αλληλογραφία, πρέπει να χρησιμοποιήσετε τη λειτουργία αλληλογραφίας στην PHP.

αλληλογραφία ("σε ποια διεύθυνση θα σταλεί", "θέμα του γράμματος", "Μήνυμα (σώμα μηνύματος)", "Από: από ποια διεύθυνση ηλεκτρονικού ταχυδρομείου αποστέλλεται το γράμμα \ r \ n");

Για παράδειγμα, πρέπει να στείλετε δεδομένα στο email του κατόχου ή του διαχειριστή του ιστότοπου [προστασία ηλεκτρονικού ταχυδρομείου]

Η γραμμή θέματος του μηνύματος ηλεκτρονικού ταχυδρομείου πρέπει να είναι σαφής και το μήνυμα ηλεκτρονικού ταχυδρομείου πρέπει να περιέχει αυτό που ο χρήστης καθορίζει στη φόρμα HTML.

αλληλογραφία (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Εφαρμογή από τον ιστότοπο "," Πλήρες όνομα: ". $ Fio.". E-mail: ". $ Email," Από: [προστασία ηλεκτρονικού ταχυδρομείου]\ r \ n ");

Πρέπει να προσθέσετε μια συνθήκη που θα ελέγξει εάν η φόρμα υποβλήθηκε χρησιμοποιώντας PHP στην καθορισμένη διεύθυνση ηλεκτρονικού ταχυδρομείου.

εάν (αλληλογραφία (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Παραγγελία από τον ιστότοπο "," Πλήρες όνομα: ". $ Fio.". E-mail: ". $ Email," Από: [προστασία ηλεκτρονικού ταχυδρομείου]\ r \ n "))
{
echo "το μήνυμα εστάλη επιτυχώς"?
) αλλο (
}

Έτσι, ο κώδικας προγράμματος του αρχείου send.php που θα στείλει δεδομένα φόρμας HTML σε αλληλογραφία θα μοιάζει με αυτό:

$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = περικοπή ($ fio);
$ email = trim ($ email);
// echo $ fio;
// ηχώ "
";
// echo $ email;
εάν (αλληλογραφία (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Εφαρμογή από τον ιστότοπο "," Πλήρες όνομα: ". $ Fio.". E-mail: ". $ Email," Από: [προστασία ηλεκτρονικού ταχυδρομείου]\ r \ n "))
(ηχώ "το μήνυμα στάλθηκε με επιτυχία"?
) αλλο (
ηχώ "προέκυψαν σφάλματα κατά την αποστολή μηνύματος".
}?>

Τρεις γραμμές για να ελέγξετε εάν τα δεδομένα που μεταβιβάστηκαν στο αρχείο σχολιάζονται. Εάν είναι απαραίτητο, μπορείτε να τα αφαιρέσετε, καθώς χρειάζονταν μόνο για τον εντοπισμό σφαλμάτων.

Τοποθέτηση κώδικα υποβολής φόρμας HTML και PHP σε ένα αρχείο

Στα σχόλια αυτού του άρθρου, πολλοί άνθρωποι θέτουν το ερώτημα πώς να δημιουργήσετε τόσο τη φόρμα HTML όσο και τον κώδικα PHP για την αποστολή δεδομένων σε αλληλογραφία σε ένα αρχείο και όχι σε δύο.

Για να υλοποιήσετε μια τέτοια εργασία, πρέπει να βάλετε τον κώδικα HTML της φόρμας στο αρχείο send.php και να προσθέσετε μια συνθήκη που θα ελέγχει για την παρουσία μεταβλητών στον πίνακα POST (αυτός ο πίνακας περνά από τη φόρμα). Δηλαδή, εάν οι μεταβλητές στον πίνακα δεν υπάρχουν, τότε πρέπει να εμφανίσετε τη φόρμα στον χρήστη. Διαφορετικά, πρέπει να αποδεχτείτε δεδομένα από τον πίνακα και να τα στείλετε στον παραλήπτη.

Ας δούμε πώς να αλλάξετε τον κώδικα PHP στο αρχείο send.php:



Φόρμα αίτησης από τον ιστότοπο


// ελέγξτε εάν οι μεταβλητές υπάρχουν στον πίνακα POST
εάν (! isset ($ _ POST ["fio"]) και! isset ($ _ POST ["email"])) (
?>





) αλλο (
// εμφάνιση της φόρμας
$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = περικοπή ($ fio);
$ email = trim ($ email);
εάν (αλληλογραφία (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Εφαρμογή από τον ιστότοπο "," Πλήρες όνομα: ". $ Fio.". E-mail: ". $ Email," Από: [προστασία ηλεκτρονικού ταχυδρομείου]\ r \ n ")) (
ηχώ "Το μήνυμα εστάλη επιτυχώς"?
) αλλο (
echo "Παρουσιάστηκαν σφάλματα κατά την αποστολή του μηνύματος";
}
}
?>

Ελέγχουμε την ύπαρξη μιας μεταβλητής στον πίνακα POST χρησιμοποιώντας τη συνάρτηση PHP isset (). Ένα θαυμαστικό πριν από αυτήν τη λειτουργία σε μια κατάσταση σημαίνει άρνηση. Δηλαδή, εάν η μεταβλητή δεν υπάρχει, τότε πρέπει να δείξουμε τη μορφή μας. Αν δεν είχα βάλει θαυμαστικό, τότε η συνθήκη θα σήμαινε κυριολεκτικά - "αν υπάρχει, τότε δείξε τη μορφή". Και αυτό είναι λάθος στην περίπτωσή μας. Φυσικά, μπορείτε να το μετονομάσετε σε index.php. Εάν μετονομάσετε το αρχείο, μην ξεχάσετε να μετονομάσετε το όνομα του αρχείου και στη γραμμή

... Η φόρμα πρέπει να συνδέεται με την ίδια σελίδα, για παράδειγμα index.php. Πρόσθεσα τον τίτλο της σελίδας στον κώδικα.

Συνήθη σφάλματα που παρουσιάζονται κατά την υποβολή φόρμας PHP από έναν ιστότοπο

Το πρώτο, ίσως το πιο συνηθισμένο λάθος, είναι όταν βλέπετε μια κενή λευκή σελίδα χωρίς μηνύματα. Αυτό σημαίνει ότι έχετε κάνει λάθος στον κώδικα της σελίδας. Πρέπει να ενεργοποιήσετε την εμφάνιση όλων των σφαλμάτων στην PHP και στη συνέχεια θα δείτε πού έγινε το σφάλμα. Προσθέστε στον κωδικό σας:

ini_set ("display_errors", "On");
error_reporting ("E_ALL");

Το αρχείο send.php πρέπει να εκτελείται μόνο στο διακομιστή, διαφορετικά ο κώδικας απλά δεν θα λειτουργήσει. Είναι επιθυμητό να μην πρόκειται για τοπικό διακομιστή, καθώς δεν είναι πάντα διαμορφωμένο να στέλνει δεδομένα σε εξωτερικό διακομιστή αλληλογραφίας. Εάν εκτελείτε τον κώδικα από πλευρά μη διακομιστή, τότε ο κώδικας PHP θα εμφανιστεί απευθείας στη σελίδα.

Έτσι, για σωστή λειτουργία, συνιστώ να τοποθετήσετε το αρχείο send.php στον ιστότοπο φιλοξενίας. Εκεί, κατά κανόνα, όλα είναι ήδη στημένα.

Ένα άλλο συνηθισμένο λάθος είναι όταν εμφανίζεται η ειδοποίηση "Το μήνυμα στάλθηκε με επιτυχία" και το γράμμα δεν φτάνει στο ταχυδρομείο. Σε αυτή την περίπτωση, πρέπει να ελέγξετε προσεκτικά τη γραμμή:

εάν (αλληλογραφία (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Παραγγελία από τον ιστότοπο "," Πλήρες όνομα: ". $ Fio.". E-mail: ". $ Email," Από: [προστασία ηλεκτρονικού ταχυδρομείου]\ r \ n "))

Αντί [προστασία ηλεκτρονικού ταχυδρομείου] θα πρέπει να υπάρχει μια διεύθυνση ηλεκτρονικού ταχυδρομείου στην οποία θέλετε να στείλετε το γράμμα και αντί[προστασία ηλεκτρονικού ταχυδρομείου] πρέπει να υπάρχει υπάρχον μήνυμα ηλεκτρονικού ταχυδρομείου αυτού του ιστότοπου. Για παράδειγμα, για έναν ιστότοπο, ο ιστότοπος θα είναι ... Μόνο σε αυτή την περίπτωση θα σταλεί επιστολή με δεδομένα από τη φόρμα.

Τελευταία ενημέρωση: 31.10.2015

Για την αποστολή αλληλογραφίας στο Διαδίκτυο, χρησιμοποιείται το πρωτόκολλο Simple Mail Transfer Protocol (SMTP). Αυτό το πρωτόκολλο καθορίζει τον τρόπο επικοινωνίας των διακομιστών αλληλογραφίας κατά τη μετάδοση e-mail.

Η κλάση SmtpClient από το χώρο ονομάτων System.Net.Mail έχει σχεδιαστεί για να λειτουργεί με το πρωτόκολλο SMTP και να στέλνει e-mail στο .NET.

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

    Host: smtp-server από τον οποίο αποστέλλεται mail. Για παράδειγμα, smtp.yandex.ru

    Θύρα: θύρα που χρησιμοποιείται από τον διακομιστή smp. Εάν δεν καθορίζεται, τότε η θύρα 25 χρησιμοποιείται από προεπιλογή.

    Διαπιστευτήρια: διαπιστευτήρια αποστολέα

    EnableSsl: Υποδεικνύει εάν θα χρησιμοποιηθεί SSL κατά την αποστολή

Μια άλλη βασική κλάση που χρησιμοποιείται κατά την αποστολή είναι το MailMessage. Αυτή η κλάση αντιπροσωπεύει το μήνυμα που αποστέλλεται. Μεταξύ των ιδιοτήτων του είναι τα ακόλουθα:

    Συνημμένα: περιέχει όλα τα συνημμένα στο γράμμα

    Σώμα: απευθείας το κείμενο της επιστολής

    Από: τη διεύθυνση του αποστολέα. Αντιπροσωπεύει ένα αντικείμενο MailAddress

    Προς: διεύθυνση παραλήπτη. Αντιπροσωπεύει επίσης ένα αντικείμενο MailAddress

    Θέμα: ορίζει το θέμα του email

    IsBodyHtml: Υποδεικνύει εάν το μήνυμα ηλεκτρονικού ταχυδρομείου αντιπροσωπεύει περιεχόμενο με κώδικα html

Ας χρησιμοποιήσουμε αυτές τις τάξεις και να στείλουμε το γράμμα:

Χρήση συστήματος. χρησιμοποιώντας System.Net? χρησιμοποιώντας System.IO. χρησιμοποιώντας System.Threading.Tasks; χρησιμοποιώντας System.Net.Mail. namespace NetConsoleApp (πρόγραμμα κλάσης (static void Main (string args)) (// αποστολέας - ορίστε τη διεύθυνση και το όνομα που εμφανίζονται στο γράμμα MailAddress από = νέα MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Tom "); // στον οποίο στέλνουμε MailAddress στο = new MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"); // δημιουργία αντικειμένου μηνύματος MailMessage m = νέο MailMessage (από, έως); // θέμα μηνύματος m.Subject =" Δοκιμή "; // κείμενο μηνύματος m.Body ="

Δοκιμαστική επιστολή για τον πελάτη smtp

"; // το γράμμα αντιπροσωπεύει τον κώδικα html m.IsBodyHtml = true; // τη διεύθυνση του διακομιστή smtp και τη θύρα από την οποία θα στείλουμε το γράμμα SmtpClient smtp = νέο SmtpClient (" smtp.gmail.com ", 587) ; // login και password smtp.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," mypassword "); smtp.EnableSsl = true; smtp.Send (m); Console.Read ();)))

Για την αποστολή, χρησιμοποιείται η μέθοδος Αποστολή (), η οποία μεταβιβάζεται σε ένα αντικείμενο MailMessage.

Μπορούμε επίσης να χρησιμοποιήσουμε την ασύγχρονη έκδοση αποστολής χρησιμοποιώντας τη μέθοδο SendMailAsync:

Χρήση συστήματος. χρησιμοποιώντας System.Net? χρησιμοποιώντας System.IO. χρησιμοποιώντας System.Threading.Tasks; χρησιμοποιώντας System.Net.Mail. namespace NetConsoleApp (πρόγραμμα κλάσης (static void Main (string args)) (SendEmailAsync (). GetAwaiter (); Console.Read ();) private static async Task SendEmailAsync () (MailAddress from = new MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Tom "); MailAddress to = new MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"); MailMessage m = new MailMessage (from, to); m.Subject =" Test "; m.Body =" Test letter 2 of smtp client client "; SmtpClient smtp = new SmtpClient (" smtp.gmail.com ", 587); smtp.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," mypassword "); smtp.EnableSsl = true; περιμένετε smtp.SendMailAsync (m); Console.WriteLine (" Mail sent ");)))

Προσθήκη συνημμένων

Μπορούμε να επισυνάψουμε συνημμένα στο γράμμα χρησιμοποιώντας την ιδιότητα Συνημμένα. Κάθε συνημμένο αρχείο αντιπροσωπεύει ένα αντικείμενο System.Net.Mail.Attachment:

MailAddress από = νέα MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"," Tom "); MailAddress to = new MailAddress (" [προστασία ηλεκτρονικού ταχυδρομείου]"); MailMessage m = νέο MailMessage (από, έως); m.Attachments.Add (νέο συνημμένο (" D: //temlog.txt "));

Αποστολή μηνυμάτων σε αλληλογραφία στο Visual Studio 2013 C ++


Φαίνεται, γιατί να επανεφεύρουμε τον τροχό; Υπάρχουν πολλά προγράμματα που μπορούν να στείλουν μηνύματα ηλεκτρονικού ταχυδρομείου σε email, δωρεάν και επί πληρωμή. Σε αυτά τα προγράμματα, μπορείτε να στείλετε επιστολές όχι σε έναν, αλλά σε πολλούς παραλήπτες ταυτόχρονα. Ωστόσο, παρ 'όλα αυτά, η προσθήκη παραληπτών γίνεται χειροκίνητα, είναι ένα δύσκολο έργο να οδηγείτε στις διευθύνσεις τους, ειδικά αν υπάρχουν περισσότερες από δώδεκα από αυτούς. Τι γίνεται αν πρέπει να στέλνετε εκατοντάδες μηνύματα ηλεκτρονικού ταχυδρομείου σε τακτική βάση; Και δεν μιλάω για ανεπιθύμητα μηνύματα, αλλά εννοώ απολύτως νόμιμες αποστολές;

Σε αυτή την περίπτωση, ένα ειδικό πρόγραμμα μπορεί να έρθει στη διάσωση. Σε αυτό το άρθρο, δεν θα υπάρχει ένα ολόκληρο πρόγραμμα, αλλά ένα μικρό πρόγραμμα που απλώς στέλνει ένα γράμμα σε μια διεύθυνση. Σε αυτήν την περίπτωση, η εξουσιοδότηση πραγματοποιείται μέσω smpt, δηλαδή η επιστολή δεν αποστέλλεται από το πουθενά, αλλά από ένα εντελώς πραγματικό γραμματοκιβώτιο. Το παράδειγμα χρησιμοποιεί mail.ru mail.

Λοιπόν, εδώ είναι το κείμενο του προγράμματος.

#include "stdafx.h" #using χρήση συστήματος ονομάτων χώρου · χρησιμοποιώντας σύστημα ονομάτων χώρου :: Net; χρήση χώρου ονομάτων System :: Net :: Mail? χρησιμοποιώντας το χώρο ονομάτων System :: Net :: Mime; χρησιμοποιώντας σύστημα ονομάτων χώρου :: Threading; χρησιμοποιώντας σύστημα ονομάτων χώρου :: ComponentModel. int main () (SmtpClient ^ Smtp = gcnew SmtpClient ("smtp.mail.ru", 25); Smtp-> Credentials = gcnew NetworkCredential ("[email protected]", "your_password"); Smtp-> EnableSsl = true ; MailMessage ^ Message = gcnew MailMessage (); Message-> From = gcnew MailAddress ("[email protected]"); Message-> To-> Add (gcnew MailAddress ("[email protected]")); Message- > Subject = "Title"; Message-> Body = "Message"; Smtp-> Send (Message);) Αξίζει να αναφερθεί αμέσως ποιες προϋποθέσεις πρέπει να πληρούνται: ένα έργο στο Visual Studio 2013 δημιουργείται όχι μόνο για C + +, πρέπει να είναι ακόμα κονσόλα, να υποστηρίζει το περιβάλλον CLR. Ας ρίξουμε μια πιο προσεκτική ματιά στο τι συμβαίνει και σε ποια γραμμή σε αυτό το πρόγραμμα C ++ που στέλνει ένα μήνυμα στο επιλεγμένο πλαίσιο e-mail.

Από την 1η έως την 8η γραμμή, συνδέονται αρχεία κεφαλίδας και χώροι ονομάτων. Η γραμμή 13 προετοιμάζει τον διακομιστή smpt. Το Yandex και το Google χρησιμοποιούν το δικό τους: smtp.yandex.ru και smtp.google.ru, αντίστοιχα. Ο αριθμός 25 σε αυτήν τη γραμμή είναι η θύρα. Σε περίπτωση που ο πάροχός σας αποκλείει αυτήν τη θύρα ή δεν είναι δυνατή η σύνδεση, μπορείτε να δοκιμάσετε αυτές τις επιλογές 465 ή 587. Στη γραμμή 14, πρέπει να εισαγάγετε το e-mail σας (από το οποίο θα σταλεί η επιστολή) και τον κωδικό πρόσβασης για αυτό το πλαίσιο.

Δώστε ιδιαίτερη προσοχή στη γραμμή 15 - αυτή συνδέει το ασφαλές πρωτόκολλο ssl. Αυτό είναι υποχρεωτικό για το Yandex και το Mail. Η γραμμή 17 δημιουργεί ένα μήνυμα. στο 18 - διεύθυνση επιστροφής. στο 19 - η διεύθυνση του παραλήπτη. 20 - κεφαλίδα επιστολής. 21 - μήνυμα. στην 22η γραμμή, γίνεται αποστολή. Εάν μετά την εκκίνηση του προγράμματος δεν εμφανίζονται σφάλματα, δεν συμβαίνει τίποτα, τότε όλα είναι εντάξει - ελέγξτε το γραμματοκιβώτιο του παραλήπτη.

Εάν έχετε τουλάχιστον κάποιες μικρές δεξιότητες προγραμματισμού, τότε το να ολοκληρώσετε τα υπόλοιπα θα είναι ένα γρήγορο. Είναι απαραίτητο να δημιουργήσετε ένα παράθυρο, μια φόρμα, με τη μορφή πολλών πεδίων εισαγωγής, να αναγκάσετε το πρόγραμμα να φορτώσει μια λίστα διευθύνσεων από, για παράδειγμα, ένα αρχείο κειμένου ή μια βάση δεδομένων MS Access. Εάν αυτό δεν είναι ακόμα σαφές για εσάς, τότε στα επόμενα άρθρα θα σας πω περισσότερα για όλα.

Οποιεσδήποτε ερωτήσεις σχετικά με προγράμματα σε C ++, java, σενάρια σε Java script και php, δημιουργία και διάταξη ιστότοπου, μπορείτε να ρωτήσετε μέσω ταχυδρομείου [προστασία ηλεκτρονικού ταχυδρομείου]ή χτυπήστε στο skype up777up2. Με πολύ λογική αμοιβή, θα χαρώ να σας βοηθήσω.

Πρόσθεση

Ένας από τους επισκέπτες του ιστολογίου έκανε μια ερώτηση: πώς να επισυνάψετε ένα αρχείο σε αυτό το πρόγραμμα; Η απάντηση είναι απλή: πρέπει να προσθέσετε μερικές γραμμές κώδικα στην εφαρμογή σας:

String ^ att = L "att.xls"; Attachment ^ dan = gcnew Attachment (att, MediaTypeNames :: Application :: Octet); Μήνυμα-> Συνημμένα-> Προσθήκη (dan); Στην πρώτη γραμμή ορίζουμε το συνημμένο αρχείο, στη δεύτερη ορίζουμε τα δεδομένα και διατάζουμε να μην τα ερμηνεύσουμε (κεφαλίδα Content-Type του πρωτοκόλλου MIME) και στην τρίτη το προσθέτουμε στο μήνυμα. Αυτό είναι όλο.

Διοικητής πλοίου 14 Οκτωβρίου 2013 στις 07:29 μ.μ

Αποστολή μέσω ηλεκτρονικού ταχυδρομείου μέσω προγραμματισμού χρησιμοποιώντας διάφορες υπηρεσίες

Πολύ συχνά πρέπει να ασχοληθείτε με την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από τον κωδικό προγράμματος. Δεν χρειάζεται να πάτε μακριά για παραδείγματα.

Αυτό το άρθρο είναι μια υπόδειξη και δεν αποκαλύπτει τίποτα καινούργιο, αλλά πριν το γράψω, κοίταξα κάτι παρόμοιο στο Διαδίκτυο και ήμουν μάλλον έκπληκτος που σχεδόν παντού προσφέρουν είτε μια μη λειτουργική ή ξεπερασμένη λύση, είτε είναι απλά γραμμένο αναλφάβητα.

Το πρώτο πράγμα που δεν πρέπει να κάνετε σε αυτά τα παραδείγματα είναι να χρησιμοποιήσετε το System.Web.Mail, το οποίο έχει από καιρό ξεπεραστεί, και από το Visual Studio 2010, η βιβλιοθήκη System.Web δεν έχει καν προστεθεί χωρίς να γνωρίζετε την πλήρη διαδρομή στο αντίστοιχο DLL.
Αντ 'αυτού, προτείνεται να χρησιμοποιήσετε τη βιβλιοθήκη System.Net.
χρησιμοποιώντας System.Net? χρησιμοποιώντας System.Net.Mail.
Έτσι, το πιο απλό πράγμα, είναι το πιο σημαντικό και συχνά χρησιμοποιείται, είναι να στείλετε ένα γράμμα από τον διακομιστή αλληλογραφίας σας, στο οποίο έχει διαμορφωθεί ένας πελάτης SMTP. Όπως καταλαβαίνετε, ο διακομιστής μπορεί να είναι είτε αυτός στον οποίο εκτελείται η εφαρμογή, είτε ένας απομακρυσμένος, στον οποίο έχετε το δικαίωμα να στείλετε γράμματα χωρίς πρόσθετη εξουσιοδότηση.

Δείγμα κώδικα για αποστολή επιστολής από τοπικό μηχάνημα:
", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = new SmtpClient (" 127.0.0.1 ")) (// Η διεύθυνση πρέπει να είναι εδώ διακομιστής αλληλογραφίας και θύρα αν απαιτείται sc. Αποστολή (mm);))

Χρήση υπηρεσιών ηλεκτρονικού ταχυδρομείου όπως Gmail, Yandex, Mail.ru κ.λπ. όλα είναι ίδια, προστίθενται μόνο παράμετροι με εξουσιοδότηση.

Διακομιστής SMTP: smtp.gmail.com
Λιμάνι: 587
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.gmail.com ", 587)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," GmailPassword "); sc. Αποστολή (mm);))

Διακομιστής SMTP: smtp.yandex.ru
Λιμάνι: 25
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.yandex.ru ", 25)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," YandexPassword "); sc. Αποστολή (mm);))

Διακομιστής SMTP: smtp.mail.ru
Λιμάνι: 25
χρησιμοποιώντας (MailMessage mm = νέο MailMessage ("Όνομα ", "[προστασία ηλεκτρονικού ταχυδρομείου]")) (mm.Subject =" Θέμα αλληλογραφίας "; mm.Body =" Σώμα αλληλογραφίας "; mm.IsBodyHtml = false; χρησιμοποιώντας (SmtpClient sc = νέο SmtpClient (" smtp.mail.ru ", 25)) (sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential (" [προστασία ηλεκτρονικού ταχυδρομείου]"," MailRuPassword "); sc. Αποστολή (mm);))
Εάν το γραμματοκιβώτιό σας στην υπηρεσία mail.ru τελειώνει με inbox.ru, list.ru ή bk.ru, τότε η διεύθυνση του διακομιστή SMTP αλλάζει ανάλογα (smtp.inbox.ru, smtp.list.ru και smtp.bk.ru ).

Όπως μπορείτε να δείτε, για να χρησιμοποιήσετε οποιαδήποτε άλλη υπηρεσία αλληλογραφίας στα προγράμματά σας, χρειάζεται μόνο να μάθετε τη διεύθυνση και τη θύρα διακομιστή SMTP, καθώς και τους κανόνες εξουσιοδότησης.

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

Ετικέτες: email, αποστολή email, smtp