Как отправить SMTP письмо без ввода учетных данных (которые часто меняются)? - PullRequest
0 голосов
/ 24 октября 2019

Я написал код ниже, который прекрасно работает. Код будет выполняться по расписанию (ежедневно и / или еженедельно) для обработки файлов и отправки по электронной почте в конце обработки с вложением результатов. Однако для этого кода требуются сетевые учетные данные (имя пользователя и пароль). Однако пароль часто меняется. Итак, как мне написать код для отправки электронного письма без необходимости вводить и изменять код mmy при смене пароля?

  Dim SmtpServer As New SmtpClient()
  SmtpServer.EnableSsl = True
  Dim mail As New MailMessage()
  SmtpServer.Credentials = New Net.NetworkCredential("dw@my-org.org", "mypassword")
  SmtpServer.Port = 587
  SmtpServer.Host = "smtp.office365.com"
  mail = New MailMessage()
  mail.From = New MailAddress("dw@my-org.org")
  mail.To.Add("dw@my-org.org")
  mail.Subject = "Results of automatic Import of Time Card Punches to Attendance Application"
  mail.Body = "Attached are the CSV logs with the results of the automatic Import of Time Card Punches to Attendance Application. The import file contains logs of any new employee records createds or any changes to any existing employees. The import issues file will not contain any results unless there were errors during import."
  mail.Attachments.Add(New Attachment(LogFilename.ToString))
  mail.Attachments.Add(New Attachment(LogimportIssues.ToString))
  SmtpServer.Send(mail)

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Узнал, что мой серверный парень сделал что-то очень умное. Если письмо отправляется внутренним пользователям, я могу использовать настроенный им SMTP-сервер и отправить его без пароля. Все, что находится внутри, может отправить через этот SMTP-ящик. Поэтому я просто изменил следующие 3 строки кода, и он начал работать. Изменено с:

SmtpServer.Credentials = New Net.NetworkCredential("dw@my-org.org", "mypassword")

SmtpServer.Port = 587 SmtpServer.Host = "smtp.office365.com"

на (не реальное имя хоста ниже, очевидно, ниже):

SmtpServer.Credentials = New Net.NetworkCredential("dw@my-org.org", "")

SmtpServer.Port = 25 SmtpServer.Host = "192.001.1.1"

Я также удалил строку ниже:

SmtpServer.EnableSsl = True

Теперь я могуотправляйте SMTP-сообщения внутри страны без пароля!

0 голосов
/ 24 октября 2019

Техника может быть;Вы можете создать текстовый файл по пути, и вы можете прочитать из этого текстового файла (или любого другого расширения), первая строка с вашим паролем. Каждый раз, когда вы хотите изменить пароль, вам нужно обновить этот файл, из кода, который вы читаете, всегда парольиз этого файла.

   ' You need to update only your textfile
     Dim pwd As String = Trim(IO.File.ReadAllText("C:\WhateverFolder\YourFile.txt"))


    ' And in code doesn't need to change anything 
    SmtpServer.Credentials = New Net.NetworkCredential("dw@my-org.org", pwd) 
...