Het volgende probeer ik voor elkaar te krijgen:
- Verbinding maken met een SMTP-server via Winsock [check]
- Versturen van een e-mail via SMTP@Winsock [check]
- Ontvangen van een e-mail via elk willekeurig e-mail programma (tijdens het testen op deze PC OutlookXP) [check]
Geen probleem dus. Feilloos.
Dan ga ik een stap verder. De e-mail moet opgemaakt worden (m.b.v. MIME uiteraard), en moet via dezelfde manier worden verzonden.
Het verzenden gaat uiteraard gewoon weer perfect, echter het ontvangen gaat niet goed. Ik krijg in Outlook de complete source (dus inclusief MIME-headers) te zien.
De source van mijn mail ziet er als volgt uit:
Dit alles in een variabele gestopt (mMessage, zul je zometeen weer terugzien). Uiteraard niet letterlijk zoals hierboven, de opmaak is VB-Proof (Chr(34) ipv ", vbCrLf, etc.)
vbCrLf heb ik op de juiste plaatsen gezet, evenals de volgorde van de headers. Ik heb een plain-text gedeelte en een HTML-gedeelte. Tevens ook nog een attachment (run.csv: plain-text).
So far so good, dacht ik zo.
Dan maak ik verbinding, en vervolgens zeg ik het volgende tegen de SMTP-server:
Daarbij heb ik een correcte fouten-afhandeling (er wordt gewacht op de juiste boodschappen van de SMTP-server, bij errors geeft hij de error en stopt hij met het verzenden van data naar de SMTP-server.
Dit werkt dus niet, ik krijg in OutlookXP letterlijk de source van de e-mail (incl. headers dus) te zien.
Na wat zoeken kwam ik op het idee om de body niet op blaat(9) te zetten, maar bij blaat(3), na "DATA" dus. Ook dit werkt niet.
Kennelijk mis ik voldoende kennis over het SMTP protocol, want hier lijkt het mij mis te gaan. Heeft iemand enig idee hoe met MIME headers om te gaan als je direct de SMTP-server aanspreekt?
- Verbinding maken met een SMTP-server via Winsock [check]
- Versturen van een e-mail via SMTP@Winsock [check]
- Ontvangen van een e-mail via elk willekeurig e-mail programma (tijdens het testen op deze PC OutlookXP) [check]
Geen probleem dus. Feilloos.
Dan ga ik een stap verder. De e-mail moet opgemaakt worden (m.b.v. MIME uiteraard), en moet via dezelfde manier worden verzonden.
Het verzenden gaat uiteraard gewoon weer perfect, echter het ontvangen gaat niet goed. Ik krijg in Outlook de complete source (dus inclusief MIME-headers) te zien.
De source van mijn mail ziet er als volgt uit:
code:
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
| From: xxx<a@b.c>
Reply-To: <a@b.c>
MIME-Version: 1.0
Content-Type: multipart/related; type="multipart/alternative"; boundary="--=nextpart"
X-Sender: xxx<a@b.c>
X-Mailer: xyz
X-Priority: 3
Return-Path: <a@b.c>
See attachment for run-details (header)
--=nextpart
Content-Type: multipart/alternative; boundary="--=nextpart2"
--=nextpart2
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
See attachment for run-details (plain)
--nextpart2
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><BODY>
See attachment for run-details (html)
</BODY></HTML>
--=nextpart2--
--=nextpart
Content-Type: text/plain; name="run.csv"
Content-Transfer-Encoding: quoted-printable
Content-ID <run.csv>
bla,bla,bla,bla,bla,bla
bla,bla,bla,bla,bla,bla
--=nextpart-- |
Dit alles in een variabele gestopt (mMessage, zul je zometeen weer terugzien). Uiteraard niet letterlijk zoals hierboven, de opmaak is VB-Proof (Chr(34) ipv ", vbCrLf, etc.)
vbCrLf heb ik op de juiste plaatsen gezet, evenals de volgorde van de headers. Ik heb een plain-text gedeelte en een HTML-gedeelte. Tevens ook nog een attachment (run.csv: plain-text).
So far so good, dacht ik zo.
Dan maak ik verbinding, en vervolgens zeg ik het volgende tegen de SMTP-server:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
| mConnectionString(0) = "HELO abc" mConnectionString(1) = "MAIL FROM:a@b.c" mConnectionString(2) = "RCPT TO:x@y.z" mConnectionString(3) = "DATA" mConnectionString(4) = "BCC:" mConnectionString(5) = "CCC:" mConnectionString(6) = "SUBJECT:Raw-data" mConnectionString(7) = "TO:Control-Manager" mConnectionString(8) = "FROM:x" & vbCrLf mConnectionString(9) = mMessage & vbCrLf & "." mConnectionString(10) = "QUIT" |
Daarbij heb ik een correcte fouten-afhandeling (er wordt gewacht op de juiste boodschappen van de SMTP-server, bij errors geeft hij de error en stopt hij met het verzenden van data naar de SMTP-server.
Dit werkt dus niet, ik krijg in OutlookXP letterlijk de source van de e-mail (incl. headers dus) te zien.
Na wat zoeken kwam ik op het idee om de body niet op blaat(9) te zetten, maar bij blaat(3), na "DATA" dus. Ook dit werkt niet.
Kennelijk mis ik voldoende kennis over het SMTP protocol, want hier lijkt het mij mis te gaan. Heeft iemand enig idee hoe met MIME headers om te gaan als je direct de SMTP-server aanspreekt?