2016-09-10 1 views
0

Je suis nouveau à la programmation web et je fais un site web en utilisant ASP.NET Core et j'essaie de créer une page "contact me" standard où l'utilisateur entre un nom, un email, un sujet et un message. ASP.NET Core doit encore avoir System.Net.Mail, donc je ne peux pas l'utiliser. J'ai vu que MailKit pouvait être utilisé pour envoyer des emails, mais je n'arrive pas à comprendre comment l'utiliser pour une page de contact. Je sais en utilisant ce codeCan MailKit peut-il être utilisé pour le formulaire "Contactez-moi"?

using (var client = new SmtpClient()) { 
      client.Connect ("smtp.friends.com", 587, false); 

      // Note: since we don't have an OAuth2 token, disable 
      // the XOAUTH2 authentication mechanism. 
      client.AuthenticationMechanisms.Remove ("XOAUTH2"); 

      // Note: only needed if the SMTP server requires authentication 
      client.Authenticate ("joey", "password"); 

      client.Send (message); 
      client.Disconnect (true); 

je peux envoyer un e-mail en utilisant mon serveur SMPT, mais il est évident que je veux la fonctionnalité des utilisateurs en utilisant le site pour pouvoir envoyer un courriel à moi. Existe-t-il un moyen d'utiliser MailKit pour cela ou ai-je besoin de trouver une autre solution? Merci.

Modifier: C'est le code que j'ai envoyé avec succès un email, mais il est toujours dit qu'il m'a été envoyé par moi.

public IActionResult SendEmail(Contact contact) 
    { 
     var emailMessage = new MimeMessage(); 

     emailMessage.From.Add(new MailboxAddress(contact.Name, contact.Email)); 
     emailMessage.To.Add(new MailboxAddress("myname", "myemail")); 
     emailMessage.Subject = contact.Subject; 
     emailMessage.Body = new TextPart("plain") { Text = contact.Message }; 

     using (var client = new SmtpClient()) 
     { 
      client.Connect("smtp-mail.outlook.com", 587); 
      client.Authenticate("myemail", "myemailpassword"); 
      client.Send(emailMessage); 
      client.Disconnect(true); 
     } 
     return RedirectToAction("Index", "Home"); 
    } 

Répondre

1

Oui, MailKit peut être utilisé à cette fin. Le problème que vous voyez est parce que outlook.com remplace votre en-tête De avec votre adresse email (c'est une "caractéristique" de outlook.com lorsque vous vous connectez via SMTP).

Vous pourriez peut-être contourner ce problème en définissant ReplyTo à l'adresse de l'utilisateur (afin que vous puissiez y répondre).

Ou vous pouvez essayer de définir le De à l'adresse de l'utilisateur et le réglage de l'expéditeur à votre adresse (pas sûr si cela va fonctionner).

+0

J'ai essayé de régler l'expéditeur sur mon adresse et cela ne semble pas fonctionner. J'ai décidé d'essayer d'utiliser le serveur yahoo smtp à la place, mais maintenant il me donne une erreur en disant que mon "from address" n'est pas vérifié. Est-ce important que le «de» est perspectives et le serveur stmp est Yahoo? Si je code dur l'email yahoo dans la section "de" cela fonctionne. – ecain

+1

Il s'agit d'une fonctionnalité du serveur SMTP visant à réduire les spams. Je ne peux pas suggérer autre chose que d'essayer un autre serveur. – jstedfast