public static async void sendEmailHttpClient(CustomEmail customEmail) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes("api" + ":" + API_KEY))); var form = new Dictionary<string, string>(); form["from"] = "My Financial Planner <*****@*****.**>"; form["to"] = customEmail.emailTo; form["subject"] = customEmail.subject; form["text"] = customEmail.message; var response = await client.PostAsync("https://api.mailgun.net/v3/" + DOMAIN + "/messages", new FormUrlEncodedContent(form)); }
public static void sendEmail(CustomEmail customEmail) { using (var client = new TcpClient(customEmail.server, customEmail.port)) { using (var stream = client.GetStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream) { AutoFlush = true }) { Console.WriteLine("1: " + reader.ReadLine() + " "); writer.WriteLine("HELO " + customEmail.server); Console.WriteLine("2: " + reader.ReadLine() + " "); writer.WriteLine("STARTTLS"); Console.WriteLine("3: " + reader.ReadLine() + " "); using (var sslStream = new SslStream(client.GetStream(), false)) { sslStream.AuthenticateAsClient(customEmail.server); using (var secureReader = new StreamReader(sslStream)) using (var secureWriter = new StreamWriter(sslStream) { AutoFlush = true }) { secureWriter.WriteLine("AUTH LOGIN"); Console.WriteLine("4: " + secureReader.ReadLine() + " "); string username = customEmail.emailFrom; var plainTextBytes1 = System.Text.Encoding.UTF8.GetBytes(username); string base64Username = System.Convert.ToBase64String(plainTextBytes1); secureWriter.WriteLine(base64Username); Console.WriteLine("5: " + secureReader.ReadLine() + " "); string password = customEmail.passwordEmailFrom; var plainTextBytes2 = System.Text.Encoding.UTF8.GetBytes(password); string base64Password = System.Convert.ToBase64String(plainTextBytes2); secureWriter.WriteLine(base64Password); Console.WriteLine("6: " + secureReader.ReadLine() + " "); secureWriter.WriteLine("MAIL FROM:<" + customEmail.emailFrom + ">"); Console.WriteLine("7: " + secureReader.ReadLine() + " "); secureWriter.WriteLine("RCPT TO:<" + customEmail.emailTo + ">"); Console.WriteLine("8: " + secureReader.ReadLine() + " "); secureWriter.WriteLine("DATA"); Console.WriteLine("9: " + secureReader.ReadLine() + " "); secureWriter.WriteLine("From: \"finanncial\"" + customEmail.emailFrom); secureWriter.WriteLine("To: " + customEmail.emailTo); secureWriter.WriteLine("Subject: " + customEmail.subject); secureWriter.WriteLine(customEmail.message); // Leave one blank line after the subject //secureWriter.WriteLine(""); // Start the message body here //secureWriter.wWriteLine("1Hello Luke,"); //secureWriter.WriteLine(""); //secureWriter.WriteLine("2Cuz! You gotta try Beck's Sapphire! It ROCKS!"); //secureWriter.WriteLine(""); //secureWriter.WriteLine("Later,"); //secureWriter.WriteLine(""); //secureWriter.WriteLine("Luke"); //// End the message body by sending a period secureWriter.WriteLine("."); Console.WriteLine("10: " + secureReader.ReadLine() + " "); secureWriter.WriteLine("QUIT"); Console.WriteLine("11: " + secureReader.ReadLine() + " "); } } } } }
public void resetPasswordRequest([FromBody]LoginCredentials login) { ApplicationUser user = userManager.FindByEmailAsync(login.Email).Result; if (user == null) { throw new System.Exception("This mail does not exist in our database."); } string token = userManager.GeneratePasswordResetTokenAsync(user).Result; CustomEmail customEmail = new CustomEmail { passwordEmailFrom = "*", emailFrom = "*****@*****.**", emailTo = login.Email, server = "smtp.gmail.com", message = "Hello " + login.Email + ", \nif you want to reset your password," + " please click in the following link: http://" + Request.Host.ToUriComponent() + "/#/reset-by-token?token=" + WebUtility.UrlEncode(token) + "&email=" + WebUtility.UrlEncode(login.Email) + "\n\nMy Financial Planner Team", subject = " Password Reset - Financial Planner", port = 587 }; EmailService.sendEmailHttpClient(customEmail); }