Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std.net.curl.SMTP doesn't escape leading dots #9935

Open
dlangBugzillaToGithub opened this issue Aug 11, 2012 · 1 comment
Open

std.net.curl.SMTP doesn't escape leading dots #9935

dlangBugzillaToGithub opened this issue Aug 11, 2012 · 1 comment

Comments

@dlangBugzillaToGithub
Copy link

destructionator (@adamdruppe) reported this on 2012-08-11T15:48:00Z

Transfered from https://issues.dlang.org/show_bug.cgi?id=8540

CC List

Description

Consider the following:

void main() {
	auto smtp = SMTP("smtp://localhost");
	smtp.mailTo = ["<me>"];
	smtp.mailFrom = "<me>";
	smtp.message = "cool
.test
does this have a bug?
	";
	smtp.perform();
}

I received:

cool
test
does this have a bug?


Worse is if the message is:

"cool
.
does this have a bug?"


in which case it comes in as just

"cool"





I've encountered this same bug in another smtp app too, it seems to be a tricky one people miss, but it can happen in the real world especially if you are sending html emails.


The fix isn't too hard though. When you're sending the data and encounter a leading period in a line in the message, just prepend another period to it when sending down the smtp connection.


"cool
.
more" is sent as "cool
..
more"


and then the recipient will get the right message.




Another thing to watch out for that std.net.curl seems to miss is a message that starts with the word "From".

smtp.message = "From something
more";


That first line gets cut off. The convention to fix this is to prepend the line with the > character.


smtp is kinda weird :)
@dlangBugzillaToGithub
Copy link
Author

destructionator commented on 2012-08-11T15:55:47Z

Oh, wait a minute on the From thing... I guess the headers can be part of the message. That's actually good, makes it easier to use for fancier things.

Might want to change the documentation: it says "Sets the message body text." but if it can include headers as well, might want to note that.

I'm not sure how curl does the separation... but eh however it works we should make it clear.

	smtp.message = "X-Test: awesome
Content-Type: text/html

	cool";

From: destructionator@gmail.com
X-Test: awesome

[-- text/html is unsupported (use 'v' to view this part) --]


So yeah those took as headers.



But this is getting a little off topic... the dot escaping needs to be done regardless.

@LightBender LightBender removed the P3 label Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants