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

Error sending multiple attachments #96

Closed
jurajkapsz opened this Issue Jul 22, 2018 · 30 comments

Comments

Projects
None yet
2 participants
@jurajkapsz

jurajkapsz commented Jul 22, 2018

Symphony: 2.7.7
Extension: 7.6.1
PHP: 7.2

Issue:
When having multiple attachments set like /workspace/attachments/file-1.pdf,/workspace/attachments/file-2.pdf, e-mails fails to send, from logs:

Fatal Error: Email Gateway Error (EmailGateway): The content of the file /some/long/webhosting/related/filesystem/path/added/to/workspace/attachments/file-1.pdf,/workspace/attachments/file-2.pdf could not be loaded.

Note the /some/long/webhosting/related/filesystem/path/added/to filepath value being prepended during sending runtime.

I asume, that it fails upon not attaching the webhosting's filesystem path to every attachment.

Notes:

Thanks.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Meanwhile I have testes this with exactly the same versions (PHP/Symphony/ETM), and I can not replicate the issue. So I need your help to debug this.

First, please double-check that you have separated the extension paths with a comma. (Your example error looks hand-written to me, so does your configuration.) The error looks like ETM treats the whole thingie as a single attachment.

Owner

michael-e commented Jul 22, 2018

Meanwhile I have testes this with exactly the same versions (PHP/Symphony/ETM), and I can not replicate the issue. So I need your help to debug this.

First, please double-check that you have separated the extension paths with a comma. (Your example error looks hand-written to me, so does your configuration.) The error looks like ETM treats the whole thingie as a single attachment.

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Thanks, yes, I have edited the example by hand. Ok, this is a copied value from ETM template XML debug, which I then use for the ETM's attachment field:

<attachments handle="workspace-media-newsletter-roset-newsletter-lay-1-a4-2pdf-workspace-media-newsletter-roset-newsletter-lay-2-a4pdf">/workspace/media/newsletter/roset_newsletter_lay-1-a4_2.pdf,/workspace/media/newsletter/roset_newsletter_lay-2-a4.pdf</attachments>

This value is a Reflection Field value, made from MultiUpload Field values using a XSLT transformation template.

I have also tried to have a comma with a space, but the result is the same. Single file attachment works.

jurajkapsz commented Jul 22, 2018

Thanks, yes, I have edited the example by hand. Ok, this is a copied value from ETM template XML debug, which I then use for the ETM's attachment field:

<attachments handle="workspace-media-newsletter-roset-newsletter-lay-1-a4-2pdf-workspace-media-newsletter-roset-newsletter-lay-2-a4pdf">/workspace/media/newsletter/roset_newsletter_lay-1-a4_2.pdf,/workspace/media/newsletter/roset_newsletter_lay-2-a4.pdf</attachments>

This value is a Reflection Field value, made from MultiUpload Field values using a XSLT transformation template.

I have also tried to have a comma with a space, but the result is the same. Single file attachment works.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Reflection field? I have never trusted this field. :-)

For testing, please paste the string literally in the ETM template's configuration: /workspace/media/newsletter/roset_newsletter_lay-1-a4_2.pdf,/workspace/media/newsletter/roset_newsletter_lay-2-a4.pdf. Does that work?

Owner

michael-e commented Jul 22, 2018

Reflection field? I have never trusted this field. :-)

For testing, please paste the string literally in the ETM template's configuration: /workspace/media/newsletter/roset_newsletter_lay-1-a4_2.pdf,/workspace/media/newsletter/roset_newsletter_lay-2-a4.pdf. Does that work?

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Looks like your gut feeling is professional too :)

A pasted string worked.

What to do now... ? I can't imagine my life without a reflection.

jurajkapsz commented Jul 22, 2018

Looks like your gut feeling is professional too :)

A pasted string worked.

What to do now... ? I can't imagine my life without a reflection.

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Wait a sec, it works now with the reflection? I returned the Attachments field value back to the reflection field node path... Gonna check again...

jurajkapsz commented Jul 22, 2018

Wait a sec, it works now with the reflection? I returned the Attachments field value back to the reflection field node path... Gonna check again...

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Nah, no, false alarm, it does not work...

Edit: So to conclude, literal string with a comma works, reflection field value with a comma does not.

jurajkapsz commented Jul 22, 2018

Nah, no, false alarm, it does not work...

Edit: So to conclude, literal string with a comma works, reflection field value with a comma does not.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Looks like your gut feeling is professional too :)

Thanks! :-)

It looks like the Reflection field somehow "escapes" the comma, so it won't be recognized the ETM.

From the top of my head: A field in Symphony has several "output values" for several (programmatic) use cases. One would need to find out:

  • Which of these output values is used by the ETM.
  • Why and how the reflection field builds this value. Is there any escaping? If yes, is it needed in other cases or could it be removed?

Since I have never used the Reflection field, this would really take a long time for me...

Owner

michael-e commented Jul 22, 2018

Looks like your gut feeling is professional too :)

Thanks! :-)

It looks like the Reflection field somehow "escapes" the comma, so it won't be recognized the ETM.

From the top of my head: A field in Symphony has several "output values" for several (programmatic) use cases. One would need to find out:

  • Which of these output values is used by the ETM.
  • Why and how the reflection field builds this value. Is there any escaping? If yes, is it needed in other cases or could it be removed?

Since I have never used the Reflection field, this would really take a long time for me...

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Maybe you could do it without using the Reflection field. Couldn't you use the MultiUpload Field values directly in the attachments configuration? Of course, you would have to add several "possible paths" there and let 'em fail if the attachment doesn't exist. (This is why ETM has an option to ignore attachment errors.) The downside would be that the number of attachments is limited to the number of paths you added. But this must not be a bad thing to do anyway.

Owner

michael-e commented Jul 22, 2018

Maybe you could do it without using the Reflection field. Couldn't you use the MultiUpload Field values directly in the attachments configuration? Of course, you would have to add several "possible paths" there and let 'em fail if the attachment doesn't exist. (This is why ETM has an option to ignore attachment errors.) The downside would be that the number of attachments is limited to the number of paths you added. But this must not be a bad thing to do anyway.

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Thanks for the ideas Michael! I will have to try things out.

One attempt: I have tried now to use a basic text field as a source of the attachments, and it also does not take a value with comma. Maybe ETM does not take such value from any field / node?

jurajkapsz commented Jul 22, 2018

Thanks for the ideas Michael! I will have to try things out.

One attempt: I have tried now to use a basic text field as a source of the attachments, and it also does not take a value with comma. Maybe ETM does not take such value from any field / node?

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Please forget my above comment regarding escaping. The issue is much simpler than that, and it is by design.

If you look at how the ETM evaluates attachments, you see that:

  • First, the configuration string is split by commas.
  • Second, each part ist treated as one attachment and gets evaluated.

So if you use a reflection field value, the configuration string does not contain any comma. So it is treated as a single attachment. When the value is evaluated, it suddenly contains a comma, but this is just a part of the path now. So it breaks.

Do you understand the issue? It's a bit hard to explain…

Owner

michael-e commented Jul 22, 2018

Please forget my above comment regarding escaping. The issue is much simpler than that, and it is by design.

If you look at how the ETM evaluates attachments, you see that:

  • First, the configuration string is split by commas.
  • Second, each part ist treated as one attachment and gets evaluated.

So if you use a reflection field value, the configuration string does not contain any comma. So it is treated as a single attachment. When the value is evaluated, it suddenly contains a comma, but this is just a part of the path now. So it breaks.

Do you understand the issue? It's a bit hard to explain…

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

In other words: Dividing multiple attachments requires commas to be in the attachments configuration string explicitely. Any commas arising from the subsequent evaluation will not be treated as attachment deviders (but as part of the file path).

Owner

michael-e commented Jul 22, 2018

In other words: Dividing multiple attachments requires commas to be in the attachments configuration string explicitely. Any commas arising from the subsequent evaluation will not be treated as attachment deviders (but as part of the file path).

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

Ok, I think I understand, it firstly takes whatever value the field has and explodes it into an array using a comma, and then evaluates those 1+ chunks as xslt.

jurajkapsz commented Jul 22, 2018

Ok, I think I understand, it firstly takes whatever value the field has and explodes it into an array using a comma, and then evaluates those 1+ chunks as xslt.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

But I am rather sure that #96 (comment) would work!

Owner

michael-e commented Jul 22, 2018

But I am rather sure that #96 (comment) would work!

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Ok, I think I understand, it firstly takes whatever value the field has and explodes it into an array using a comma, and then evaluates those 1+ chunks as xslt.

Yes, this is it.

Owner

michael-e commented Jul 22, 2018

Ok, I think I understand, it firstly takes whatever value the field has and explodes it into an array using a comma, and then evaluates those 1+ chunks as xslt.

Yes, this is it.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

Here is an example similar to what I use. The section has two upload fields, let's call 'em upload-file-1 and upload-file-2:

/workspace{/data/my-datasource/entry/upload-file-1/@path}/{/data/my-datasource/entry/upload-file-1/filename},/workspace{/data/my-datasource/entry/upload-file-2/@path}/{/data/my-datasource/entry/upload-file-2/filename}

Of course, I must use "ignore attachment errors" in case nothing has been uploaded. :-)

You could probably do somthing similar with the multi upload field!

Owner

michael-e commented Jul 22, 2018

Here is an example similar to what I use. The section has two upload fields, let's call 'em upload-file-1 and upload-file-2:

/workspace{/data/my-datasource/entry/upload-file-1/@path}/{/data/my-datasource/entry/upload-file-1/filename},/workspace{/data/my-datasource/entry/upload-file-2/@path}/{/data/my-datasource/entry/upload-file-2/filename}

Of course, I must use "ignore attachment errors" in case nothing has been uploaded. :-)

You could probably do somthing similar with the multi upload field!

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

But I am rather sure that #96 (comment) would work!

Yes, it would! Thanks very much Michael!

Ok, I think I can manage. Actually I am fine with having predefined multiple attachment positions and having the ignore errors option on (nifty!), I am only thinking that the attachments are really important in this case, so I am thinking - about scenarios - of what could in reality fail with them and if I need a handle to act upon the inability to load an attachment, that is to stop the sending... I guess it's still about that the newsletter author has to upload those files in any case, and only the system itself would have to fail with loading those files in order to send emails also with no atts, and that might be not likely at all. Otherwise in that case, maybe only the not-to-ignore-att-errors option would prevent sending such emails in this situation...

Well, but I think we got it.

Thanks a lot Michael! Have a nice day!

jurajkapsz commented Jul 22, 2018

But I am rather sure that #96 (comment) would work!

Yes, it would! Thanks very much Michael!

Ok, I think I can manage. Actually I am fine with having predefined multiple attachment positions and having the ignore errors option on (nifty!), I am only thinking that the attachments are really important in this case, so I am thinking - about scenarios - of what could in reality fail with them and if I need a handle to act upon the inability to load an attachment, that is to stop the sending... I guess it's still about that the newsletter author has to upload those files in any case, and only the system itself would have to fail with loading those files in order to send emails also with no atts, and that might be not likely at all. Otherwise in that case, maybe only the not-to-ignore-att-errors option would prevent sending such emails in this situation...

Well, but I think we got it.

Thanks a lot Michael! Have a nice day!

@jurajkapsz jurajkapsz closed this Jul 22, 2018

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 22, 2018

Owner

You're welcome!

Indeed, emails will be sent no matter why attachments fail. But if your configuration is fine, I would't expect them to fail technically (as opposed to: author failure, not uploaded at all…). If you ever experience technical issues with the attachments, please report!

Owner

michael-e commented Jul 22, 2018

You're welcome!

Indeed, emails will be sent no matter why attachments fail. But if your configuration is fine, I would't expect them to fail technically (as opposed to: author failure, not uploaded at all…). If you ever experience technical issues with the attachments, please report!

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 22, 2018

If you ever experience technical issues with the attachments, please report!

Will do if anything!

jurajkapsz commented Jul 22, 2018

If you ever experience technical issues with the attachments, please report!

Will do if anything!

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Jul 23, 2018

@michael-e I did it this way for now, I changed this line for:

$atts = array();
if (strpos($this->attachments, ',') !== false) {
	$atts = explode(',', $this->attachments);
} else {
	$atts_field_value = $this->evalXPath($this->attachments, false);
	if (!empty($atts_field_value)) {
		$atts = explode(',', $atts_field_value);
	}
}

Maybe it is better to do it this way (but haven't tested yet):

if (strpos($this->attachments, ',') !== false) {
	$atts = explode(',', $this->attachments);
} else {
	$atts_field_value = $this->evalXPath($this->attachments, false);
	$atts = !empty($atts_field_value) ? explode(',', $atts_field_value) : array();
}

Basically, if I find a comma in the attachments value, I split the string right away and continue like that, otherwise I always evaluate the attachments value with evalXPath method first and then continue.

So far everything works. Would you say it is worth to add to the master? Or are there some implications? I could send a pull request.

Thanks.

jurajkapsz commented Jul 23, 2018

@michael-e I did it this way for now, I changed this line for:

$atts = array();
if (strpos($this->attachments, ',') !== false) {
	$atts = explode(',', $this->attachments);
} else {
	$atts_field_value = $this->evalXPath($this->attachments, false);
	if (!empty($atts_field_value)) {
		$atts = explode(',', $atts_field_value);
	}
}

Maybe it is better to do it this way (but haven't tested yet):

if (strpos($this->attachments, ',') !== false) {
	$atts = explode(',', $this->attachments);
} else {
	$atts_field_value = $this->evalXPath($this->attachments, false);
	$atts = !empty($atts_field_value) ? explode(',', $atts_field_value) : array();
}

Basically, if I find a comma in the attachments value, I split the string right away and continue like that, otherwise I always evaluate the attachments value with evalXPath method first and then continue.

So far everything works. Would you say it is worth to add to the master? Or are there some implications? I could send a pull request.

Thanks.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Jul 25, 2018

Owner

Regarding the code style I prefer the first version, because it is easier to understand (although it's longer). And using $atts = array(); in the first line means that the variable will always be set, no matter what you do later.

So what do we have?

  • If the config contains commas, you explode it. Later, when dynamic parts (nodes/params) are parsed, the resulting attachment URLs may contain commas (if nodes/params containing commas have been used). This may be desirable in certain cases.
  • If the config does not contain commas, you evaluate the string first, then explode it. This will terribly break if any evaluated node or param contains a comma. It will not be possible to generate attachment URLs containing commas. In addition to that, evaluation takes place again afterwards (in the loop), so it is executed twice without need.

This solution is not optimal.

The only clear solution I can think of requires to drop the possibility to generate commas in attachment URLs using nodes/params. Then one could always evaluate first, then explode. I am not sure.

Owner

michael-e commented Jul 25, 2018

Regarding the code style I prefer the first version, because it is easier to understand (although it's longer). And using $atts = array(); in the first line means that the variable will always be set, no matter what you do later.

So what do we have?

  • If the config contains commas, you explode it. Later, when dynamic parts (nodes/params) are parsed, the resulting attachment URLs may contain commas (if nodes/params containing commas have been used). This may be desirable in certain cases.
  • If the config does not contain commas, you evaluate the string first, then explode it. This will terribly break if any evaluated node or param contains a comma. It will not be possible to generate attachment URLs containing commas. In addition to that, evaluation takes place again afterwards (in the loop), so it is executed twice without need.

This solution is not optimal.

The only clear solution I can think of requires to drop the possibility to generate commas in attachment URLs using nodes/params. Then one could always evaluate first, then explode. I am not sure.

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 1, 2018

Thanks for the valuable code style feedback, it makes perfectly sense.

About my tweak, I did not came with anything new besides my first thoughts, so:

If the config does not contain commas, you evaluate the string first, then explode it. This will terribly break if any evaluated node or param contains a comma. It will not be possible to generate attachment URLs containing commas.

I think this is also what happens now, but I might be wrong. Comma is not being supported within URLs or file paths. I was not aiming to solve this. Actually I am fine with the current limitation, it makes kind of sense under current implementation.

In addition to that, evaluation takes place again afterwards (in the loop), so it is executed twice without need.

Yes, for this I would e.g. include two different for loop versions within if else conditions, one with xpath evaluation, the other not. But I understand that just might be an improper solution of mine.

About the commas, maybe the way to support commas for URLs or attachment file paths would be to use a different symbol for splitting up the config? But that might be just messy and too hacky for the end use.

Sorry, my comments might be just way off as I am not a backend dev.

jurajkapsz commented Aug 1, 2018

Thanks for the valuable code style feedback, it makes perfectly sense.

About my tweak, I did not came with anything new besides my first thoughts, so:

If the config does not contain commas, you evaluate the string first, then explode it. This will terribly break if any evaluated node or param contains a comma. It will not be possible to generate attachment URLs containing commas.

I think this is also what happens now, but I might be wrong. Comma is not being supported within URLs or file paths. I was not aiming to solve this. Actually I am fine with the current limitation, it makes kind of sense under current implementation.

In addition to that, evaluation takes place again afterwards (in the loop), so it is executed twice without need.

Yes, for this I would e.g. include two different for loop versions within if else conditions, one with xpath evaluation, the other not. But I understand that just might be an improper solution of mine.

About the commas, maybe the way to support commas for URLs or attachment file paths would be to use a different symbol for splitting up the config? But that might be just messy and too hacky for the end use.

Sorry, my comments might be just way off as I am not a backend dev.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Aug 4, 2018

Owner

Comma is not being supported within URLs or file paths.

Well, it is. The current implementation allows for commas if they are added by the evaluation (i.e. they are in evaluated node/param values). And AFAIK commas are allowed in URLs.

However, if one decides that commas are never needed (I mean, theoretically…), would you need to treat things different at all? IMHO s.th. like this would do it:

if (empty($this->_parsedProperties['attachments'])) {
    $atts_config_eval = $this->evalXPath($this->attachments, false);
    $attachments = array();
    if (!empty($atts_config_eval)) {
        $atts = explode(',', $atts_config_eval);
        foreach ($atts as $att) {
            if (filter_var($att, FILTER_VALIDATE_URL)) {
                $attachments[] = $att;
            } else {
                $attachments[] = DOCROOT . $att;
            }
        }
    }
    $this->_parsedProperties['attachments'] = $attachments;
}
Owner

michael-e commented Aug 4, 2018

Comma is not being supported within URLs or file paths.

Well, it is. The current implementation allows for commas if they are added by the evaluation (i.e. they are in evaluated node/param values). And AFAIK commas are allowed in URLs.

However, if one decides that commas are never needed (I mean, theoretically…), would you need to treat things different at all? IMHO s.th. like this would do it:

if (empty($this->_parsedProperties['attachments'])) {
    $atts_config_eval = $this->evalXPath($this->attachments, false);
    $attachments = array();
    if (!empty($atts_config_eval)) {
        $atts = explode(',', $atts_config_eval);
        foreach ($atts as $att) {
            if (filter_var($att, FILTER_VALIDATE_URL)) {
                $attachments[] = $att;
            } else {
                $attachments[] = DOCROOT . $att;
            }
        }
    }
    $this->_parsedProperties['attachments'] = $attachments;
}
@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 5, 2018

Ah, ok I understand, so you can get paths with commas by mixing e.g. url parts with evaluated values (as also mentioned in the readme file; I did not elaborated that readme part back then further, because I don't anticipate any commas whatsoever); well, again a good solution I would say.

Yes, your code makes more sense in my case, thanks. I initially hoped I could just make "something" upfront with the config value and the existing code could pick up.

I would go with the existing possibilities which are fine, but for the sake of sakeness I want to be able to break up sending mail when something would be wrong with wannabe attached files as of now.

Thanks again Michael!

jurajkapsz commented Aug 5, 2018

Ah, ok I understand, so you can get paths with commas by mixing e.g. url parts with evaluated values (as also mentioned in the readme file; I did not elaborated that readme part back then further, because I don't anticipate any commas whatsoever); well, again a good solution I would say.

Yes, your code makes more sense in my case, thanks. I initially hoped I could just make "something" upfront with the config value and the existing code could pick up.

I would go with the existing possibilities which are fine, but for the sake of sakeness I want to be able to break up sending mail when something would be wrong with wannabe attached files as of now.

Thanks again Michael!

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Aug 5, 2018

Owner

Yes. But I admit that this "comma discussion" is purely theoretical. I don't know of anybody who uses commas in attachment URLs. I might simply drop this feature and release a new major version of ETM (with the code above).

Give me some more days to think about it. (And maybe I get some feedback here by people watching this repo.)

Owner

michael-e commented Aug 5, 2018

Yes. But I admit that this "comma discussion" is purely theoretical. I don't know of anybody who uses commas in attachment URLs. I might simply drop this feature and release a new major version of ETM (with the code above).

Give me some more days to think about it. (And maybe I get some feedback here by people watching this repo.)

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 5, 2018

Sure, sounds great.

jurajkapsz commented Aug 5, 2018

Sure, sounds great.

michael-e added a commit that referenced this issue Aug 9, 2018

Always interpret commas as attachment separators
Now the attachments config value is evaluated before getting exploded on commas. This allows to set multiple attachments with a single parameter or XPath query, e.g. using a Reflection Field. At the same time it breaks a non-official (hidden) feature: the possibility to include literal commas in local paths or URLs using parameters or XPath queries.

Re: #96
@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Aug 9, 2018

Owner

Done. ETM 8.0.0 is out in the wild.

Owner

michael-e commented Aug 9, 2018

Done. ETM 8.0.0 is out in the wild.

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 9, 2018

Awesome! Definitely going for this one, many thanks!

jurajkapsz commented Aug 9, 2018

Awesome! Definitely going for this one, many thanks!

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 10, 2018

@michael-e there is left some old valid info in the readme, when the commas were still supported, last sentence of this paragraph, in chapter 2.2 Subject, recipients, from, reply-to and attachments:

Starting with version 7.5.0 ETM also allows HTTP(S) URLs for attachments, with a slight restriction: URLs must not contain commas, because the comma is supposed to be the separator for multiple attachments. It is possible, however, to mix local paths and URLs in the attachments string.

jurajkapsz commented Aug 10, 2018

@michael-e there is left some old valid info in the readme, when the commas were still supported, last sentence of this paragraph, in chapter 2.2 Subject, recipients, from, reply-to and attachments:

Starting with version 7.5.0 ETM also allows HTTP(S) URLs for attachments, with a slight restriction: URLs must not contain commas, because the comma is supposed to be the separator for multiple attachments. It is possible, however, to mix local paths and URLs in the attachments string.

@michael-e

This comment has been minimized.

Show comment
Hide comment
@michael-e

michael-e Aug 10, 2018

Owner

I don't think that this suggests to "create commas somehow", does it? It clearly states that URLs must not contain commas, which indeed is a restriction if you think about "any valid URL".

Owner

michael-e commented Aug 10, 2018

I don't think that this suggests to "create commas somehow", does it? It clearly states that URLs must not contain commas, which indeed is a restriction if you think about "any valid URL".

@jurajkapsz

This comment has been minimized.

Show comment
Hide comment
@jurajkapsz

jurajkapsz Aug 11, 2018

Well, no, it does not on second thought. I had similar thoughts after posting this... anyways this exact part led me formerly to the possibility of having commas in attachment filepaths if needed. So I wanted to log that just in case.

But now that you say so, I does not sound so "comma oriented" anymore... :)

jurajkapsz commented Aug 11, 2018

Well, no, it does not on second thought. I had similar thoughts after posting this... anyways this exact part led me formerly to the possibility of having commas in attachment filepaths if needed. So I wanted to log that just in case.

But now that you say so, I does not sound so "comma oriented" anymore... :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment