PowerShell - Enviar email desde PowerShell

 
Vista:
sin imagen de perfil
Val: 8
Ha mantenido su posición en PowerShell (en relación al último mes)
Gráfica de PowerShell

Enviar email desde PowerShell

Publicado por Meta (9 intervenciones) el 25/01/2022 00:19:33
Hola:

Quiero convertir o adaptar el mismo funcionamiento de este código de consola hecho en C# en PowerShell.

Antes que nada. ¿Es posible hacer enviar correos electrónico con PowerShell?

Código C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;
 
namespace Enviar_email_Consola_07
{
    internal class Program
    {
        static void Main(string[] args)
        {
 
 
            // Variables.
            string usuario, contraseña, destinatario, asunto, mensaje;
            const int MAXIMA_LONGITUD = 40000;
 
            #region Configuración ventana.
            // Título de la ventana y versión del .Net usando.
            Console.Title = "Gestor correo electrónico. "
                + typeof(string).Assembly.ImageRuntimeVersion;
 
            // Tamaño de la ventana, x, y, o ancho y alto.
            const byte ancho = 80;
            const byte alto = 25;
            Console.SetWindowSize(ancho, alto);
 
            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Black;
 
            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Gray;
 
            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();
 
            // Visible el cursor.
            Console.CursorVisible = true;
            #endregion
 
            // Título del programa.
            Console.WriteLine("\t\t----------------------------------------");
            Console.WriteLine("\t\t\tEnviar Correo Electrónico");
            Console.WriteLine("\t\t----------------------------------------");
 
            try
            {
 
                Console.WriteLine("\n");
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tTu correo electrónico: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                usuario = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tIntroducir contraseña: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                contraseña = LeerPassword();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tDestinatario: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                destinatario = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tAsunto: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                asunto = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tMensaje: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                //mensaje = Console.ReadLine();
 
                #region Enviar más de 255 caracteres.
                // #########################################################################
                Stream entradaDeDatos = Console.OpenStandardInput();
                byte[] buffer = new byte[MAXIMA_LONGITUD];
                int numerosBytesLeidos = entradaDeDatos.Read(buffer, 0, MAXIMA_LONGITUD);
                char[] chars = Console.InputEncoding.GetChars(buffer, 0, numerosBytesLeidos);
                mensaje = new string(chars);
                // #########################################################################
                #endregion
 
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.DarkCyan;
                Console.Write("\t\tCantidad de texto introducido: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine(mensaje.Length);
 
                MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje)
                {
                    // Enviar textos con tildes.
                    BodyEncoding = Encoding.UTF8
                };
 
                SmtpClient servidor = new SmtpClient("smtp.gmail.com")
                {
                    Port = 587
                };
                NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
                servidor.Credentials = credenciales;
                servidor.EnableSsl = true;
 
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("\t\tEnviando correo...");
                servidor.Send(correo);
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\t\t¡Correo enviado satisfactoriamente!");
                correo.Dispose();
                Console.CursorVisible = false;
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("ERROR: \n");
                Console.WriteLine("\t\t" + ex.Message);
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("\t\tNo se ha enviado el correo.");
                Console.ReadKey();
            }
 
        }
 
        // A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla.
        public static string LeerPassword()
        {
            ConsoleKeyInfo cki;
            StringBuilder sb = new StringBuilder();
            int contador = 0;
 
            do
            {
                cki = Console.ReadKey(true);
                if (cki.Key != ConsoleKey.Enter)
                {
 
                    sb.Append(cki.KeyChar);
                    if (contador < 1)
                    {
                        Console.Write("*");
                    }
                    contador++;
                }
 
                else
                {
                    break;
                }
 
            } while (true);
            Console.WriteLine();
            return sb.ToString();
        }
    }
}

Espero que se pueda y me echen una mano.

Muchas gracias y feliz 2022.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder