Diskuze: smtp.seznam.cz
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 40 zpráv z 40.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
V PHP jsem použil imap
pak jsem si to hodil do XML a feeduji to
do třídní skupiny na FB, abychom nemuseli sledovat stále schránku kvůli
novým mailům.
$mailserver = "pop3.seznam.cz";
$port = "110/pop3";
$user = "@seznam.cz";
$pass = "";
if ($mbox = imap_open("{" . $mailserver . ":" . $port . "}INBOX", $user, $pass))
{
$unread = imap_search($mbox, 'NEW');
if (!empty($unread))
{
foreach ($unread as $i)
{
$header = imap_header($mbox, $i);
$from = $header->from[0]->mailbox . '@' . $header->from[0]->host;
$body = imap_fetchbody($mbox, $i, 1);
$body = str_replace('=', '%', $body);
$body = urldecode($body);
$body = iconv("CP1250", "UTF-8", $body);
$body = nl2br($body);
echo('
<item>
<title><![CDATA[Nový třídní email]]></title>
<link>http://www.seznam.cz/</link>
<pubDate>' . date(DATE_RSS) . '</pubDate>
<description><![CDATA[' . $from . '<br />' . $body . '<br /><br />' . ']]></description>
</item>
');
}
}
else
{
echo('Nothing new');
}
imap_close($mbox);
}
else
{
echo('Connect failed');
}
V C# je SMTP klient:
http://www.itnetwork.cz/…posilani-sms
Vyplníš to akorát jinak a mělo by to fachčit.
To je zbytečné - od toho má .NET System.Net.Mail.***
new System.Net.Mail.SmtpClient("host").Send(new System.Net.Mail.MailMessage("email odesílatele", "email příjemce")
{
Subject = "Subject", Body = "Message text"
};);
Já používám šifrované spojení. Kód napsaný na jeden dlouhý řádek není vždy kratší. Já to mám na více řádků kvůli přehlednosti.
(new SmtpClient("smtp.gmail.com", 587) { Credentials = new NetworkCredential("[email protected]", "******"), EnableSsl = true }).Send("[email protected]", to, "Předmět", msg_body);
Teď ho máš delší ty
Kluci, budeme se tu hasterit,
kdo co ma delsi?
Mate to nekdo otestovany v C# ? Tedy ze pres program v C# lze odesilat email
prave ze seznamu? Ono to ma prave problem s tim SMTP, protoze seznam je
originalni a ma jinak resenou autentizaci...
Vlastně oba píšeme totéž... Je blbost řešt server, ve kterém schránku máš/ kam posíláš.
new System.Net.Mail.SmtpClient("host").Send(new System.Net.Mail.MailMessage("email odesílatele", "email příjemce")
{
Subject = "Subject", Body = "Message text"
};);
Mělo by fungovat tohle:
SmtpClient smtp = new SmtpClient("smtp.seznam.cz", 25);
Dle toho co píšou zde: http://napoveda.seznam.cz/…serveru.html
Ale nezkoušel jsem. Každopádně v PHP mi to jde, tj. by v C# neměl být problém.
Jó a musí se něco povolit v nastavení emailu je POP3/IMAP. Pokud chceš mít přístup k těm mailům tak tam zaškrtni povolit IMAP.
Jinak, pokud jen chceš vystupovat pod danou e-mailovou adresou, tak jak říká matesax, můžeš zadat "od koho", "komu" a používat kterýkoliv SMTP server.
Já vám nevim, nějak mi to stále nejde. Na emailu v nastavení jsem to povolil, tedy povolil jsme protokol IMAP.
kód vypadá takto:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
new System.Net.Mail.SmtpClient("smtp.seznam.cz", 25).Send(new System.Net.Mail.MailMessage("[email protected]","[email protected]")
{
Subject = "Subject", Body = "Message text"
});
}
}
}
tedy pouze jsem doplnil váš kód a beztak to nefunguje, skončí to s výjimkou:
Mailbox unavailable. The server response was: 5.7.1 Not authenticated, please use AUTH first.
System.Net.NetworkCredential mailAuthentification = new System.Net.NetworkCredential("[email protected]", "heslo");
System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient("smtp.seznam.cz", 25);
mailClient.EnableSsl = true;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = mailAuthentification;
mailClient.SendAsync(new System.Net.Mail.MailMessage("od koho", "kam")
{
Subject = "Subject",
Body = "Message text"
}, "xxx");
Tady se jen může pokazit doplnění správných údajů... (Tímto kódem odesílám emaily naprosto běžně.)
user: pokusCsharp
pass: pokusCsharp11
Ted jsme tedy vytvoril pokusny email, ze ktereho se pokusim odeslat email na tento vytvoreny email. Kod vypada takto:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Net.NetworkCredential mailAuthentification = new System.Net.NetworkCredential("[email protected]", "pokusCsharp11");
System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient("smtp.seznam.cz", 25);
mailClient.EnableSsl = true;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = mailAuthentification;
mailClient.SendAsync(new System.Net.Mail.MailMessage("[email protected]", "[email protected]")
{
Subject = "Subject",
Body = "Message text"
}, "xxx");
}
}
}
ale zadny email neprisel... Co dety delam spatne?
Google...
Nefunguje mi to.
Ani kdyz doslovne okopiruji ukazku z toho webu, co jsi mi sem dal. A vyplnim ji podle mych predstav. Podelanej seznam! Nemuze byt normalni jako Gmail?
Uka, jak to máš. Hoď sem celej ten projekt. Třeba na DropBox v zipu.
V ukazce na tom webu neni prihlaseni ke klientovi, zkusil jsme to vsak bez nej a psalo to 5.7.1 ze to chce autentifikaci. Vytvoril jsme tedy autentifikaci a ted to zas pise, ze se nezdarila... Dal bych prednost tomu kratsimu kodu od Matesaxe, ale tam zas nevim co strcit misto tech "xxx".
using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmptExamples.Async
{
public class SimpleAsynchronousExample
{
static bool mailSent = false;
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
// Get the unique identifier for this asynchronous operation.
String token = (string)e.UserState;
if (e.Cancelled)
{
Console.WriteLine("[{0}] Send canceled.", token);
}
if (e.Error != null)
{
Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
}
else
{
Console.WriteLine("Message sent.");
}
mailSent = true;
}
public static void Main(string[] args)
{
// Command line argument must the the SMTP host.
SmtpClient client = new SmtpClient("smtp.seznam.cz",25);
client.Credentials = new NetworkCredential("pokusCsharp", "pokusCsharp11");
// Specify the e-mail sender.
// Create a mailing address that includes a UTF8 character
// in the display name.
MailAddress from = new MailAddress("[email protected]","Martin Erdt", System.Text.Encoding.UTF8);
// Set destinations for the e-mail message.
MailAddress to = new MailAddress("[email protected]");
// Specify the message content.
MailMessage message = new MailMessage(from, to);
message.Body = "This is a test e-mail message sent by an application. ";
// Include some non-ASCII characters in body and subject.
string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192', '\u2193' });
message.Body += Environment.NewLine + someArrows;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "test message 1" + someArrows;
message.SubjectEncoding = System.Text.Encoding.UTF8;
// Set the method that is called back when the send operation ends.
client.SendCompleted += new
SendCompletedEventHandler(SendCompletedCallback);
// The userState can be any object that allows your callback
// method to identify this send operation.
// For this example, the userToken is a string constant.
string userState = "test message1";
client.SendAsync(message, userState);
Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
string answer = Console.ReadLine();
// If the user canceled the send, and mail hasn't been sent yet,
// then cancel the pending operation.
if (answer.StartsWith("c") && mailSent == false)
{
client.SendAsyncCancel();
}
// Clean up.
message.Dispose();
Console.WriteLine("Goodbye.");
}
}
}
Tak jsem to zkoušel. A prý, že seznam.cz neumožňuje přístup ke svému
SMTP serveru. Resp. ta metoda Send
u C# SmtpClient
potřebuje něco co seznam nedovoluje.
Takže to asi budeš muset posílat přes G-Mail a zadáš jako odesílatele e-mail seznamu nebo zkusit nějaký free smtp server.
Založ si email na gmailu a zařiď si přeposílání - a je to...
Svého času Seznam vyžadoval POP_before_SMTP. Možná už zrušili i tuto možnost.
Hojky,
vím že tohle vlákno je už staré, ale třeba se to ještě někomu bude
hodit.
Udělal jsem si do jedné aplikace třídu SeznamCz, kdyžtak jí sem můžu o
víkendu hodit (píšu z mobilu), stačí říct. Ještě musím pošéfit
přílohy, jinak by měla fungovat.
Ještě jednou jsem si přečetl svůj komentář a vidím, že není úplné zřejmé, jestli myslím aplikací nebo třídu. Na mysli jsem měl třídu.
Omlouvám se za doublepost, omylem jsem se dotknul displeje.
Tak uz to zase zmizlo, omlovam se za spam.
Ok, v patek nebo v sobotu se podelim. To me tesi, ze mozna najde jeste
vyuziti.
Ahoj, mohl bys jí sem prosím hodit? Určitě to někomu pomůže
Třeba mě, i když tedy vše řeším už přes Gmail
Budu se snažit to sem do večera dát. Mám trochu problémy při posílání více příloh najednou.
Tak, máš to tady: https://www.dropbox.com/…b/19u-AZhvoi
Použití:
SeznamCz seznam = new SeznamCz();
seznam.mailMessage = nejakaTvojeMailMessage;
seznam.networkCredential = tvojeNetworkCredentials;
seznam.Odesli();
Ahoj, tak me napadlo, nechtel bys udelat nejaky jednoduchy EmailSender ze
ktereho by to slo odesilat vsude? Jako demonstraci tve tridy... Urite, by to
nekdo rad vyuzil Nebo spis si
prohlid za ucelem pochopeni kodu, tak by bylo dobre to i hodne komentovat
Jasně, udělám. Bude to ale chvíli trvat, momentálně dělám na třech projektech zároveň a ještě k tomu mám přístup k počítači jen o víkendu. Určitě ale zařadím do fronty.
Zobrazeno 40 zpráv z 40.