Commit graph

708 commits

Author SHA1 Message Date
468e1e2b2c
Protect against empty address list, refactor error handling
Added a condition to prevent assignment of an empty address list to the 'HeaderFrom' scenario. This eliminates potential runtime errors when trying to access an nonexistent element of a slice.
Adjusted error handling in the sendmail execution part by reusing the 'err' variable, promoting cleaner, more readable code.
2023-11-20 18:36:19 +01:00
1e447b5f2c
Merge branch 'main' into feature/145_add-eml-parser-to-generate-msg-from-eml-files 2023-11-10 18:23:52 +01:00
cdc8c37309
Merge pull request #155 from wneessen/feature/152_recipients_from_single_string
Add new methods and tests for handling email addresses
2023-11-10 18:22:45 +01:00
43c26a37e3
Updated mail.Address initialization in tests to make golangci-lint happy
Tests for new mail address handling methods have been updated to use {Name:"", Address: "email@example.com"} format for initializing the []*mail.Address slices, instead of the previous shorthand {"", "email@example.com"}. This was done to increase code clarity and explicitness.
2023-11-10 18:14:44 +01:00
cc14864129
#152: Add new methods and tests for handling email addresses
Added new methods `ToFromString()`, `CcFromString()` and `BccFromString()` in msg.go file to handle strings of comma-separated email addresses.
2023-11-10 18:07:56 +01:00
e9331e0b7c
Add time import and tests for invalid date in email
Added `time` import in the eml_test.go and added two new test use-cases: `exampleMailPlainNoEncInvalidDate` and `exampleMailPlainNoEncNoDate`. The `exampleMailPlainNoEncInvalidDate` is used to check if the parser can correctly handle email with invalid date. Meanwhile, `exampleMailPlainNoEncNoDate` checks if the parser can correctly add the current date to an email that didn't specify a date. This will improve the parser's resilience and flexibility in handling various email scenarios.
2023-11-05 19:48:43 +01:00
8a1391b9df
Update test emails and enhance parser tests
The test emails in the eml_test.go file have been updated with more diverse fields, including variations of encoding types. These changes help improve the robustness of our parser tests by evaluating its function with a wider range of email structures. Tests including quoted-printable and base64 encoded emails have been added.
2023-11-02 16:06:27 +01:00
9607d08469
Add EML parsing from string to tests
A new test `TestEMLToMsgFromString` was added to "eml_test.go". This test asserts the proper functionality of `EMLToMsgFromString` method that allows us to parse EMLs directly from a string input. This test is a necessary part of ensuring the functionality and reliability of our EML parsing process.
2023-10-31 11:45:37 +01:00
f9140ce90e
Add parsing of EML from string and reader
Added two new methods `EMLToMsgFromString` and `EMLToMsgFromReader` in "eml.go". They allow EML parsing directly from a given string and a reader object, increasing overall functionality and versatility of the EML parsing process. This will enable the users to parse EML documents more flexibly."
2023-10-31 11:45:09 +01:00
6bda5d1aaa
Merge branch 'main' into feature/145_add-eml-parser-to-generate-msg-from-eml-files 2023-10-20 14:23:24 +02:00
cf45f64cc5
Merge pull request #149 from wneessen/feature/147_add-method-to-remove-any-attachmentembed
Feature/147 add method to remove any attachmentembed
2023-10-20 14:21:42 +02:00
a4379a51dc
Merge pull request #148 from leahoop/147_remove_attachments_and_embeds
#147 add remove attachments and embeds methods
2023-10-20 09:50:54 +02:00
leahoop
3c2c106cb4 #147 add remove attachments and embeds methods 2023-10-20 10:21:03 +08:00
2bba7b902b
Updated error handling and encoding comparison in EML parsing
This commit changes the usage of error value and improves the string comparison for encoding types in EML file parsing. It ensures file closure after read operations to avoid memory leaks. Error messages are made dynamic for improved error reporting. Comments on function has also been made more descriptive.
2023-10-17 10:41:42 +02:00
54ccb80925
Add base64 support in email parser
Implemented base64 encoding support in the email parser. This addition allows the parser to read and decode base64 encoded emails.
2023-10-13 16:27:57 +02:00
a3b3deb467
#145: Support for quoted-printable encoding in email parser
Added support for quoted-printable encoding in email parser to increase its functionality. The change includes a case handling feature for 'EncodingQP' and related conversions to allow for proper message body reading and encoding setting. This improves the robustness and the scope of email content types that the parser can handle."
2023-10-13 16:04:07 +02:00
e7c717d0fc
"Rename Mime10 to MIME10 in codebase
Renamed field 'Mime10' to 'MIME10' across multiple files for canonical representation and consistency with standard MIME naming format in the protocol."
2023-10-13 15:23:28 +02:00
07a3450103
Added SPDX license header 2023-10-13 15:08:53 +02:00
1a9141074a
Add References header field and improve string methods
Added "References" header field to cover more potential use cases and enhance versatility. This field will allow applications to track series of related messages.
Test for "References" field has also been added for validation.
Also included are string methods for Content-type objects with relevant tests, ensuring accurate string conversion. Unnecessary duplicate method of string conversion for Charset has been removed to streamline the code and improve readability.
2023-10-13 15:06:54 +02:00
f60b689b03
Refactor EML file parsing and header extraction
We can no parse simple mails (multipart is not working yet). The existing implementation was made more efficient by refactoring the EML file parsing and header extraction mechanism. Added 'strings' and 'bytes' packages to facilitate these changes. Previously, headers and body were parsed separately which was unnecessarily complex and increased the chance of errors. Now, with the new function 'readEML' and the helper function 'parseEMLBodyParts', we are able to parse headers and body together which not only simplifies the code but also increases its reliability. Specifically, 'bytes.Buffer' now helps us capture body while parsing, which removes need for separate handling. Additionally, certain headers like 'charset' and body types are also accounted for in the new implementation, enhancing the completeness of information extracted from EML files.
2023-10-13 15:06:28 +02:00
3d50370a4c
Extract and set charset from email content type
The diff modifies how the email library handles the extraction of the mime media type from an email header. It uses the mime.ParseMediaType function to parse the content type header. The function gives back the media type as a string and a mapping of different associated parameters. This mapping was previously just printed, but now the charset parameter is also used for setting the charset of the email if it exists.
2023-09-27 11:29:58 +02:00
d733b6e17d
Making slight progress on EML parsing 2023-09-21 13:50:36 +02:00
d8d2a6e714
Add EML parsing functionality to mail package
Added two new functions `EMLToMsg` and `readEML` to the `mail` package. `EMLToMsg` function opens and parses a .eml file and returns a pre-filled Msg pointer. `readEML` opens an EML file and uses net/mail to parse the header and body. These changes are made to provide support for EML file parsing, which is a common requirement in many email-based applications.
2023-09-15 13:16:14 +02:00
0bd5390e37
Update codecov.yml 2023-08-23 11:47:00 +02:00
8f3e5d382c
Merge pull request #143 from wneessen/feature/142_implement-structured-json-logger
#142 Add structured JSON logger and associated tests
2023-08-23 11:46:13 +02:00
77d9e3d02a
#142 Add structured JSON logger and associated tests
This commit introduces a new type 'JSONlog' that satisfies the Logger interface for structured JSON logging. This includes new methods 'Debugf', 'Infof', 'Warnf' and 'Errorf' to log messages at different levels and an associated test 'jsonlog_test.go' to ensure correct functionality. This enhances the logging functionality by providing clarity in logs and eases debugging process.
2023-08-23 11:16:23 +02:00
0189acf1e4
Refactor log level and direction function to separate file
Moved Level constants and directionPrefix() function from log/stdlog.go to log/log.go. This change improves the organization of the code by grouping log level constants and related functions in the same file. Furthermore, this removes redundancy and ensures consistency of log level across different files.
2023-08-15 11:59:16 +02:00
9ee864316a
Merge pull request #141 from wneessen/136_debuglog_refactor
Refactor logging for clearer messaging direction
2023-08-15 11:23:02 +02:00
e0716052e7
Merge branch 'main' into 136_debuglog_refactor 2023-08-15 11:14:42 +02:00
f9b1e46d6d
Remove unnecessary .idea XML configuration files
The deleted .idea XML configuration files (markdown.xml, modules.xml, Project_Default.xml) were not required for the functioning of the project. Removing these files helps in reducing clutter and simplifying the project structure. Also, these files can often contain user-specific settings or paths, and may cause conflicts when working in a team.
2023-08-15 11:13:47 +02:00
c7f3a4ddae
Merge remote-tracking branch 'origin/main' into 136_debuglog_refactor 2023-08-15 11:11:47 +02:00
3ba64d5e28
Merge pull request #140 from wneessen/go-1.21-maintenance
Update Go version to 1.21 in GitHub workflows
2023-08-15 10:16:06 +02:00
b2e54717b3
Update Go version to 1.21 in GitHub workflows
This commit updates the Go version from 1.20 to 1.21 on three GitHub workflow files: golangci-lint.yml, codecov.yml, and sonarqube.yml. The change ensures we use the latest Go version which is more efficient and comes with additional features, leading to improved project performance.
2023-08-15 10:11:13 +02:00
5948b38702
Remove redundant vcs.xml file
The .idea/vcs.xml file was deleted because it is not needed for the project. It was initially created by the IntelliJ IDEA but we're managing version control configurations through another way, making this file redundant.
2023-08-15 10:08:47 +02:00
c2e3613c28
Remove .idea/go-mail.iml, update .gitignore
Deleted the `.idea/go-mail.iml` file which was committed in error and should not be part of the source code repository. Updated the `.gitignore` file to ignore the whole `.idea` directory, since it contains configuration files that are specific to each developers environment and not required for the project build. The changes in the repository will now make it more clutter-free and prevent unintentional commits of unnecessary files in the future.
2023-08-15 10:04:01 +02:00
04aac48288
Merge branch 'main' into 136_debuglog_refactor
# Conflicts:
#	msgwriter.go
2023-08-08 11:13:21 +02:00
05c2105705
Merge pull request #139 from wneessen/bugfix/138_segfault-in-writer-because-createpart-error-is-ignored
Fix nil pointer dereference in msgwriter due to missing error handling
2023-08-08 11:10:31 +02:00
edd6051df3
#138: Add error handling to message writing process
In the updated version of msgwriter.go, an additional error handling process has been included. If an error is detected when creating a new part in the message writer, this error is stored and prevents executing the writeBody function. This fixes nil pointer dereference in `mw.writeBody` if an error occured previously.
2023-08-08 10:59:10 +02:00
39080a8a05
#136: Add error handling to message writing process
In the updated version of msgwriter.go, an additional error handling process has been included. If an error is detected when creating a new part in the message writer, this error is stored and prevents executing the writeBody function. This fixes nil pointer dereference in `mw.writeBody` if an error occured previously
2023-08-08 10:54:38 +02:00
1c5c1e318c
#136: Refactor logging for clearer messaging direction
The logging system in the smtp.go and log package has been refactored. A new custom log type `Log` was introduced, that includes the message direction, format and arguments. The `Logger` interface and the `Stdlog` implementation were modified to accept this new type. This change provides a clearer understanding of message direction inside logs, allowing for easier debugging and reduced complexity. This change does not affect features or disrupt user functionality. Additionally, it allows for custom implementations of the log.Logger interface to without being forced to use the C --> S/C <-- S direction logging.
2023-08-02 11:43:45 +02:00
832c0026b1
Merge pull request #137 from wneessen/logger-readablity
Replace hardcoded '2' in Output with const CallDepth
2023-07-24 16:06:16 +02:00
7d69ec8faa
Replace hardcoded '2' in Output with const CallDepth
A `const CallDepth` placeholder has been introduced and has been set to 2. This is used as an argument in Output method calls in various log levels like debug, info, warn, and error in place of previously hardcoded '2'. This change improves the readability of the code. The '2' represented the call depth of log.Logger's Output method, which wasn't immediately clear with the hardcoded value.
2023-07-24 15:27:39 +02:00
2b27643187
Merge pull request #132 from drakkan/oauth2_test
oauth2: add more test cases
2023-06-04 16:01:42 +02:00
Nicola Murino
61b9e59dd2 oauth2: add more test cases 2023-06-04 10:47:19 +02:00
4100fef083
Merge pull request #131 from wneessen/v0.4.0-prep
Preparation for the v0.4.0 release:
2023-05-31 09:41:01 +02:00
c01788641b
Preparation for the v0.4.0 release:
- Updated discord link
2023-05-31 09:40:51 +02:00
438cfd60eb
Preparation for the v0.4.0 release:
- Bump version in doc.go
- Add sonarlint to .gitignore
- Update README to reflect the changes and contributors
- Fixed typos in auth_cram_md5_118.go, msg.go, msg_test.go, reader.go and smtp_ehlo_117.go
2023-05-31 09:34:45 +02:00
30b20c5049
Merge pull request #130 from drakkan/xoauth2
add Oauth2 support
2023-05-31 09:24:26 +02:00
Nicola Murino
2122186ca3 CI FreeBSD: use the latest 12.x and 13.x versions 2023-05-29 18:22:58 +02:00
Nicola Murino
2a67b397c7 OAuth2: don't send the "*" command to cancel authentication
XOAUTH2 does not follow the SMTP AUTH RFC
2023-05-29 18:21:24 +02:00