3 votes

Formatage d'une chaîne de caractères en tant qu'adresse électronique

Ce SELECT renvoie l'adresse électronique du propriétaire du projet :

var selectEmailData = "SELECT User.Email FROM Projects INNER JOIN User ON Projects.ProjectOwner = User.UserId WHERE ProjectId=@0";
var dataEmail = db.Query(selectEmailData, ProjectId);

@foreach (var row in dataEmail)
{
    @row.Email
}

Mais quand j'ai essayé ça :

var mailTo = dataEmail.ToString();

Pour envoyer un courriel :

WebMail.Send(
    to: mailTo,
    subject: "Hello there!",
    body: "Your project is ready."
);

J'ai eu ça : La chaîne de caractères spécifiée n'a pas la forme requise pour une adresse électronique.

Qu'est-ce qui ne va pas avec ce code ?

0voto

JohnG Points 3302

Je suis presque sûr

var dataEMail = db.Query(…) would return a collection not a string.

ALORS...

var mailTo = dataEmail.ToString();

retournerait quelque chose comme "System.Collections.Generic......".

Je suppose que vous voulez quelque chose comme ceci

var selectEmailData = "SELECT User.Email FROM Projects INNER JOIN User  ON Projects.ProjectOwner = User.UserId WHERE ProjectId=@0";
var allEmails = db.Query(selectEmailData, ProjectId);

@foreach (var row in allEmails)
{
  WebMail.Send(
  to: @row.Email,
  subject: "Hello there!",
  body: "Your project is ready."
)

0voto

D3ivid Points 55

Validation ?

Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); 
Match match = regex.Match(email); 
if (match.Success)
{
//Send email
}
else
{
//Bad email
}

Autre moyen :

try
{
MailAdress email = new MailAddress(<enter here string>);
}
catch (FormatException fe)
{
//Bad email
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X