There are two ways of doing this: you can hook into the "live" product data using {{ item.purchasable.product.articleNumber }}
-- and this is probably fine for the use-case of a confirmation email that presumably gets sent immediately. However, if you're outputting historic order data on the front end, or generating sales reports etc, then ideally you don't want to use the live data for this purpose - rather you want a static snapshot of the data as it was at the time of the order. That's what {{ item.snapshot }}
is for, so I'd generally prefer that for safety.
However, out of the box, {{ item.snapshot.product }}
doesn't include any custom fields. To get your custom fields saved to the snapshot you need to save them to the cart during your add-to-cart form submissions. You need an array field named options
which you can then add the data to like this:
<input type="hidden" name="options[articleNumber]" value="123">
Then you can retrieve that in the order with {{ item.snapshot.options.articleNumber }}
A better explanation of snapshots: https://craftcms.stackexchange.com/a/35658/271
About line item options:
https://craftcms.com/docs/commerce/3.x/orders-carts.html#line-item-options-and-notes